日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java基本数据类型与封装类 示例_Java零基础系列教程10Java抽象与封装

發布時間:2024/4/19 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java基本数据类型与封装类 示例_Java零基础系列教程10Java抽象与封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

配套視頻教程

軟件出現的目的

用計算機的語言描述現實世界

用計算機解決現實世界的問題

為什么使用面向對象

世界由對象組成

面向對象的思想 描述 面向對象的世界 符合人類思維習慣

從現實中抽象出類分三步:找出它的種類

找出它的屬性

找出它的行為

用面向對象描述世界

第一步:發現類

class Dog {

}

根據“對象”抽象出“類”

第二步:發現類的屬性

狗類共有的特征:品種

年齡

昵稱

健康情況

跟主人的親密度

… …class Dog {

String name = "旺財"; // 昵稱

int health = 100; // 健康值

int love = 0; // 親密度

String strain = "拉布拉多犬"; // 品種

}只放和業務相關的屬性

第三步:發現類的方法

狗類共有的行為:跑

輸出自己的信息

… …class Dog {

String name = "旺財"; // 昵稱

int health = 100; // 健康值

int love = 0; // 親密度

String strain = "拉布拉多犬"; // 品種

/* 輸出狗的信息 */

public void print() {

// 輸出狗信息的代碼

}

}只放和業務相關的方法

使用類圖描述類

實踐

實現領養寵物功能

編寫寵物類Dog和Penguin

創建寵物對象,輸入領養的寵物信息并輸出

對象初始化Penguin pgn = new Penguin();

pgn.name = "qq";

pgn.sex = "Q仔";能否在創建對象的同時就完成賦值?

使用構造方法:

Penguin pgn1 = new Penguin();class Penguin {

// 屬性

/* 無參構造方法 */

public Penguin() {

name = "qq";

love = 20;

sex = "Q仔";

System.out.println("執行構造方法");

}

}

構造方法

系統提供默認無參構造方法public Penguin() {

}

自定義構造方法public Penguin () {

name = "qq";

love = 20;

sex = "Q仔";

}public Penguin (String name,int health,int love,String sex ) {

this.name = name;

this.health = health;

this.love = love;

this.sex = sex;

}系統不再提供默認無參構造方法

this關鍵字是對一個對象的默認引用,這里用以區分同名成員變量

方法重載

System.out.println(45);

System.out.println(true);

System.out.println("狗在玩耍!");

調用重載方法pgn = new Penguin();

pgn.print();

pgn = new Penguin("美美", 80, 20, "Q仔");

pgn.print();

一個例子class Penguin {

String name = null; //昵稱

int health = 0; // 健康值

String sex = null; // 性別

public void Penguin() {

health=10;

sex="雄";

System.out.println("執行構造方法");

}

public void print() {

System.out.println("企鵝的名字是" + name + ",健康值是"

+ health + ",性別是" + sex);

}

}Penguin pgn3= new Penguin();

pgn3.print();

找出下面代碼的問題class Dog {

private String name = "旺財"; // 昵稱

private int health = 100; // 健康值

private int love = 0; // 親密度

public void play(int n) {

int localv;

health = health - n;

System.out.println(name+" "+ localv +" "+health+" "+love);

}

public static void main(String[] args) {

Dog d=new Dog();

d.play(5);

}

}

static靜態成員

一個例子 統計對象被創建出來的個數class Person

{

public String name;

public int age;

static public long all_count;

public Person(){

all_count++;

}

public Person( String name , int age ){

all_count++;

this.name = name;

this.age = age;

}

// 統計人數的函數

public long getCount(){

return all_count;

}

// 應該具備找同齡人的功能

public boolean isSameAge( Person p1 ){

return this.age == p1.age;

}

}

class Demo9

{

public static void main(String[] args)

{

Person p1 = new Person( "jame" , 34 );

Person p2 = new Person( "lucy" , 34 );

Person p3 = new Person( "lili" , 34 );

Person p4 = new Person();

System.out.println( p1.getCount() + " " + p2.getCount() + " " + p3.getCount() );

System.out.println( p1.isSameAge( p2 ) );

System.out.println( p1.isSameAge( p3 ) );

}

}

4:static特點

1 隨著類的加載而加載,靜態會隨著類的加載而加載,隨著類的消失而消失。說明它的生命周期很長。2 優先于對象存在。—>靜態是先存在,對象是后存在。

3 被所有實例(對象)所共享。

4 可以直接被類名調用

使用static定義方法

用類名調用: Person.print();靜態方法只能訪問靜態屬性,不能訪問實例屬性

找錯誤class Dog {

private String name = "旺財"; // 昵稱

private int health = 100; // 健康值

private int love = 0; // 親密度

public void play(int n) {

static int localv=5;

health = health - n;

System.out.println(name+" "+localv+" "+health+" "+love);

}

public static void main(String[] args) {

Dog d=new Dog();

d.play(5);

}

}

封裝

Dog d = new Dog();

d.health = -1000;

屬性隨意訪問,不合理的賦值

封裝的概念

封裝:將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問

封裝的好處

1.隱藏類的實現細節

2.只能通過規定方法訪問數據

3.方便加入控制語句

4.方便修改實現

封裝的步驟

class Dog {

private String name = "旺財"; // 昵稱

private int health = 100; // 健康值

private int love = 0; // 親密度

private String strain = "拉布拉多犬"; // 品種

public int getHealth() {

return health;

}

public void setHealth (int health) {

if (health > 100 || health < 0) {

this.health = 40;

System.out.println("健康值應該在0和100之間,默認值是40");

} else

this.health = health;

}

// 其它getter/setter方法

}

this

用類名定義一個變量(對象,實例)的時候,定義的只是一個引用,外面可以通過這個引用來訪問這個類里面的屬性和方法。

那么類里面是夠也應該有一個引用來訪問自己的屬性和方法呢?

JAVA提供了一個很好的東西,就是 this 對象,它可以在類里面來引用這個類的屬性和方法。

先來個簡單的例子:public class ThisDemo {

String name="Mick";

public void print(String name){

System.out.println("類中的屬性 name="+this.name);

System.out.println("局部傳參的屬性="+name);

}

public static void main(String[] args) {

ThisDemo tt=new ThisDemo();

tt.print("Orson");

}

}

關于返回類自身的引用,《Thinking in Java》有個很經典的例子。

通過this 這個關鍵字返回自身這個對象然后在一條語句里面實現多次的操作public class ThisDemo {

int number;

ThisDemo increment(){

number++;

return this;

}

private void print(){

System.out.println("number="+number);

}

public static void main(String[] args) {

ThisDemo tt=new ThisDemo();

tt.increment().increment().increment().print();

}

}

一個類中定義兩個構造函數,在一個構造函數中通過 this 這個引用來調用另一個構造函數public class ThisDemo {

String name;

int age;

public ThisDemo (){

this.age=21;

}

public ThisDemo(String name){

this();

this.name="Mick";

}

private void print(){

System.out.println("最終名字="+this.name);

System.out.println("最終的年齡="+this.age);

}

public static void main(String[] args) {

ThisDemo tt=new ThisDemo("zhangsan"); //隨便傳進去的參數

tt.print();

}

}

練習

創建Dog類

編寫Test類

package com.company;

/**

* Created by ttc on 2017/12/28.

*/

//private ,default, protected,public

public class Dog {

private String name = "旺財"; // 昵稱

private int health = 100; // 健康值0---100 private私有的

private int love = 0; // 親密度

private int type;//類型:1狗2企鵝

private int kind;//品種

public String toString()

{

String strKind = "";

if(kind == 1)

{

strKind = "拉布拉多";

}

else if(kind == 2)

{

strKind = "雪納瑞";

}

String str = "寵物的自白,我的名字叫"

+name+"健康值是"+health+"和主人的親密度是"+love+"我是一只"+strKind;

return str;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getHealth() {

return health;

}

public void setHealth(int health) {

this.health = health;

}

public int getLove() {

return love;

}

public void setLove(int love) {

this.love = love;

}

public int getType() {

return type;

}

public void setType(int type) {

this.type = type;

}

public int getKind() {

return kind;

}

public void setKind(int kind) {

this.kind = kind;

}

}package com.company;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("歡迎來到寵物店");

System.out.println("請輸入寵物名字");

String name = scanner.next();

System.out.println("請輸入寵物類型:1狗,2企鵝");

int type = scanner.nextInt();

if(type == 1)

{

Dog d = new Dog();

System.out.println("請輸入品種,1聰明的拉布拉多,2酷酷的雪納瑞");

int kind = scanner.nextInt();

d.setKind(kind);

d.setName(name);

System.out.println(d);

}

else

{

//new 企鵝();

}

}

}

創建Penguin類

編寫Test類

總結

以上是生活随笔為你收集整理的java基本数据类型与封装类 示例_Java零基础系列教程10Java抽象与封装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。