1.封装:属性设置为私有的private,封装在类的内部,对外提供public的get/set方法供外部调用
好处:在类的内部对参数做一些限制,防止非法调用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("参数不合法!");
}else{
score = s;
}
}
public int getAge(){
return age;
}
public void setAge(int a){
if (a<3||a>30){
System.out.println("参数不合法");
}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.多态:子类的对象可以当做父类的对象来使用
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类型的参数,实际传的是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修饰
有抽象方法的类是抽象类,只有声明,没有实现
抽象类中既可以有抽象方法,也可以有普通方法
抽象类无法实例化,不能去new一个对象
抽象类主要是为了被继承
子类必须实现里面的抽象方法,如果子类不实现抽象方法,子类也只能被看成一个抽象类
5.接口 interface 特殊的抽象类
接口的方法是抽象方法,没有普通方法。方法默认是public abstract 修饰的
接口中的成员变量是常量。默认是public static final修饰的
接口中不能有构造方法
接口采用的是多继承的机制,一个类可以实现多个接口
6.final关键字
修饰类:类不能被继承
修饰方法 : 不能被子类重写
修饰成员变量: 只能被赋值一次,不能修改
修饰局部变量: 只能被赋值一次,不能修改
7.static 静态
修饰成员变量 类名.变量 调用
修饰方法 类名.方法名 调用
8.package 包
public :修饰类,方法,成员变量,可以被其他类访问,类同名时,把包名带上 protected :修饰方法,成员变量,被 子类,以及子类的子类访问
private :修饰成员变量,方法,限制了只能在类内部访问
缺省 : 修饰类,方法,变量,在当前包生效
|