1.封裝:屬性設置為私有的private,封裝在類的內部,對外提供public的get/set方法供外部調用
好處:在類的內部對參數(shù)做一些限制,防止非法調用class Student1{
private String name;
private int age;
private float score;
// 獲取屬性的值
public float getScore() {
return score;
}
// 設置屬性的值
public void setScore(float s){
if(s<0 || s>150){
System.out.println("參數(shù)不合法!");
}else{
score = s;
}
}
public int getAge(){
return age;
}
public void setAge(int a){
if (a<3||a>30){
System.out.println("參數(shù)不合法");
}else{
age = a;
}
}
}
2.繼承:使用extends關鍵字,繼承弗雷德屬性,不能繼承構造方法
沒有顯式寫extends時,默認是從Object繼承的
每個類只能有一個父類,但是可以多層繼承。比如,一個類有父類,祖父類,曾祖父類...
子類除了繼承父類的方法,也可以有自己的屬性和方法
Override 重寫 子類重寫父類同名的方法
OverLoad 重載
class Dog extends Pet {
private String color;
public Dog(String name, int age, int health) {
// super 超類/父類,調用的父類的構造方法
super(name, age, health);
}
public Dog(String name, int age, int health, String color) {
super(name, age, health);
this.color = color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
3.多態(tài):子類的對象可以當做父類的對象來使用
public class Demo04 {
// 寵物看病的方法
public static void doctor_shenyi(Pet pet){//傳Pet 或Pet的子類
if(pet.getHealth()<50){
System.out.println("打針");
pet.setHealth(pet.getHealth()+20);
}else{
System.out.println("按摩");
pet.setHealth(pet.getHealth()+2);
}
}
public static void main(String[] args) {
Dog dog =new Dog("小白",3,40);
doctor(dog);
doctor_shenyi(dog);//方法的定義的是Pet類型的參數(shù),實際傳的是Dog的類型
System.out.println(dog.getHealth());
Pet pet = new Pet("小小",2,50);
doctor_shenyi(pet);
Cat cat = new Cat("加菲",1,80);
doctor_shenyi(cat);
TaiDi taiDi = new TaiDi("泰迪",2,70,"白色");
doctor_shenyi(taiDi);
doctor(taiDi);
}
}
class Cat extends Pet{
public Cat(String name, int age, int health) {
super(name, age, health);
}
}
4.抽象類 abstract修飾
有抽象方法的類是抽象類,只有聲明,沒有實現(xiàn)
抽象類中既可以有抽象方法,也可以有普通方法
抽象類無法實例化,不能去new一個對象
抽象類主要是為了被繼承
子類必須實現(xiàn)里面的抽象方法,如果子類不實現(xiàn)抽象方法,子類也只能被看成一個抽象類
5.接口 interface 特殊的抽象類
接口的方法是抽象方法,沒有普通方法。方法默認是public abstract 修飾的
接口中的成員變量是常量。默認是public static final修飾的
接口中不能有構造方法
接口采用的是多繼承的機制,一個類可以實現(xiàn)多個接口
6.final關鍵字
修飾類:類不能被繼承
修飾方法 : 不能被子類重寫
修飾成員變量: 只能被賦值一次,不能修改
修飾局部變量: 只能被賦值一次,不能修改
7.static 靜態(tài)
修飾成員變量 類名.變量 調用
修飾方法 類名.方法名 調用
8.package 包
public :修飾類,方法,成員變量,可以被其他類訪問,類同名時,把包名帶上 protected :修飾方法,成員變量,被 子類,以及子類的子類訪問
private :修飾成員變量,方法,限制了只能在類內部訪問
缺省 : 修飾類,方法,變量,在當前包生效
|