第七天
封装:
程序的设计追求“高内聚,低耦合”
数据的隐藏:通过接口来访问
属性私有:get、set
public class pet {
private String name;//private属性私有在外部中不能使用
private int age; //这里写了一个get方法 //这时候我们可以在外部通过.getName的方法实现
public String getName(){
return this.name ;
} //这里同样可以用.setName的方法在外部写入数据
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
} //封装可以防止系统的恶意破坏,可以保护信息,增加可维护性
public int getAge() {
if(age>120 || age<0){
this.name ="错误";
}else{
return age;
}
}
}
继承(public class student extends person{}//学生继承了人)
- Java里只有单继承 ,没有多继承
- object类、super、方法重写
- 子类继承父类就会有父类的全部方法(但是如果是私有的是无法继承的)
- Java中所有的类默认继承object类
- super
public class student extends Person{
private String name="456";
public void text(String name){
//调用无参构造
super();//调用父类的构造器必须放在子类构造器第一行一般默认可以不写
System.out.println(name); //输出text传入的参数
System.out.println(this.name);//输出456
System.out.println(super.name);//输出123
}
}
public class Person{
protected String name="123"; //每个类都必须有无参构造可以不写,系统会生成
}
注意点:
1.super调用父函数的构造方法,必须位于子类的第一行
2.super只能出现在子类的方法或构造方法中即只能在继承条件下才能使用
3.super和this不能同时调用构造方法
4.this没有继承也可以使用,默认本类构造
方法的重写
public class abc extends cba{
public static void test(){//static修饰的为静态成员变量或类变量;
//没有被static修饰的叫实例变量
/* 不加静态继承时会被重写 静态成员变量,
可以用类名直接访问 实例变量可以有多个拷贝,
具有灵活性 静态方法中不能使用this、super关键字
*/
System.out.println("测试2");
}
}
========================================================
public class cba{
public static void test(){
System.out.println("测试1");
}
}
=========================================================
public class text{
public static void main(String[] args){ //方法的调用只和左边的类型有关
abc a=new abc();
a.test();//测试2 //父类的引用指向了子类
cba b=new abc();
b.test();//测试1
}
}
重写的条件:
1.子类继承了父类,子类才能重新父类
2.参数列表必须相同
3.修饰符,范围可以扩大但不能缩小:public>Protected>Default>private
4.抛出的异常:范围,可以被缩小,但不能扩大:ClassNoteFoundException-->Exception(大)
重写,子类的方法和父类必须要一致;方法体同
为什么要重写:
父类的功能,子类不一定需要,需要进行重写来满足。
多态
- 多态存在的条件
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
- 注意:多态是方法的多态,属性没有多态
- instanceof(类型转换)引用类型,判断一个对象是什么类型
浙公网安备 33010602011771号