Day11-封装-继承-多态

简单小结


封装

  • 高内聚,低耦合

    高内聚就是类的内部数据操作细节自己完成,不允许外部干涉。

    低耦合暴露少量的方法给外部使用。

  • 封装:禁止直接访问一个对象中的数据实际表示,而应通过接口来访问,这称为信息隐藏(就是把一个数据放到上锁的盒子里保存,然后通过钥匙来打开访问)

  • 属性私有: get/set

  1. Student类

 
public class Student {
     //属性私有
     private String name;
     private int id;
     private int age;
 ​
     //提供方法访问,get/set
     //get方法获取封装的数据
     public String getName(){
         return this.name;
     }
     //set方法设置数值
     public void  setName(String name){
         this.name = name;
 ​
     }
 ​
     public int getAge() {
         return age;
     }
 ​
     public void setAge(int age) {
         this.age = age;
     }
 ​
     public int getId() {
         return id;
     }
 ​
     public void setId(int id) {
         if (id !=0) {
             this.id = id;
         } else {
             this.id = -1;
 ​
         }
     }
 }//  get/set可通过alt+insert快捷输入

  

  1. 应用类

 
public class Application {
     public static void main(String[] args) {
         Student s1 = new Student();
         s1.setName("张三");
         System.out.println(s1.getName());
         s1.setId(012131);
         System.out.println(s1.getId());
     }
 }

  


继承

  • 继承本质就是对某一批类的抽象

  • 继承在java中只有单继承

  • 在java中,所有的类都是直接或间接继承 object类

  • 继承了父类所有的没有被私有的方法(只是方法)

  1. Person父类

 public class Person {
     public String Name;
     public int age;
     private int money = 1_0000_0000;
 ​
     public int getMoney() {
         return money;
     }
 ​
     public void setMoney(int money) {
         this.money = money;
     }
     public void say(){
         System.out.println("我是fw");
     }
 }

  

  1. Student子类(继承父类所有方法)

 
public class Student extends Person {
 ​
 }

  

  1. 应用类

 public class Application {
     public static void main(String[] args) {
         Student s1 = new Student();
         System.out.println(s1.getMoney());
         s1.say();
     }
 }
 //输出结果
 100000000
 我是fw

  

  • super

  1. super调用父类的构造方法,而且还要在构造方法的第一个

  2. 只能出现在子类或构造方法中

  3. super和this不能同时调用构造方法,不能同时出现

  • this

  1. this表示本类的对象,而super的是父类

  2. this没继承也可用,而super需要继承

  3. this(); 本类的构造

    super(); 父类的构造


方法重写

  • 重写都是方法的重写,和属性无关

  • 方法名相同,参数列表相同

  • 修饰符:范围可以扩大但不能缩小 public>protected>default>private

  • 抛出的异常:范围可以被缩小但不能扩大: ClassNotFoundException -->Exception(大)、

  • 静态方法的重写是跟左边的对象,而非静态的方法重写就是子类重写了父类的方法

重写是因为父类的功能子类不一定需要,或者子类需要的功能父类没有


多态

  • 多态是方法的多态

  • 父类和子类,有联系,类型转换异常 ClassCastExceotion

  • 存在条件:有继承关系,方法需要重写,父类引用子类对象 Father f1 = new Son();

  • static 方法属于类,他不属于实例、final是常量、private方法都不能多态

posted @ 2021-07-11 21:16  浅mo年华  阅读(45)  评论(0)    收藏  举报