第七天

封装
程序的设计追求“高内聚,低耦合”
数据的隐藏:通过接口来访问
属性私有: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(类型转换)引用类型,判断一个对象是什么类型

posted @ 2021-07-14 12:59  风干一条鱼  阅读(56)  评论(0)    收藏  举报