Day18

类的封装,继承,多态

  • 该露的露,该藏的藏

​ 1. 我们程序设计要追求“高内聚,低耦合”

​ 高内聚 就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合: 仅暴露少量的方法给外部使用

  • 封装(数据的隐藏)
  1. 通常,是应该禁止直接访问一个对象数据的实际表示。二应通过操作接口来访问,这称为信息隐藏
  • 属性私有: get/set

     ```java
    

    package Demo01;

/**

  • @author java小白松
    */
    public class Application {
    public static void main(String[] args) {
    Student s1= new Student();

    s1.setName(“song”);
    System.out.println(s1.getName());
    s1.setAge(999);
    System.out.println(s1.getAge());
    }
    }

    ```
    
    ```
    
package Demo01;

/**
 * @author java小白松
 */

/**
 * 1.提高程序的安全性,保护数据
 * 2.隐藏代码的实现细节
 * 3.统一的接口
 * 4.系统可通过维护增加了
 */
public class Student {

//属性私有
     private  String name;
    private  int id;  //学号
    private  char sex;// 性别
    private  int  age;
// 提供一些可以操作这个属性的方法
    //提供一些public 的get.set 方法
    // get 获得这个数据
    // set这个数据设置值
    public  String getName(){
        return  this. name;
    }
    public  void setName(String name ){

         this.name =name;

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    // alt +insert 能够快速生成set和get方法

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if ( age>130||age<0){
             this.age =2;
        } else {

        this.age = age;}
    }
}

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
  • extends的意思是扩展,子类是父类的扩展
  • Java中的类只有单继承,没有多继承
  • 继承是类与类之间的一种关系,除此之外,类和类之间的关系还有依赖,组合,聚合等
  • 继承是两个类的,一个为子类(派生类),一个为父类(基类。子类继承父类,使用关键字extends来表示
  • 子类和父类之间,从意义上讲应该具有is a的关系
  • object类
  • super 这个代表父类,this是当前的属性
  • 方法的重写
package Dome02;

/**
 * @author java小白松
 */
// 父类
    // 在Java中所有的类都直接或者间接继承object
public class Person {
     private  int  money;
 public  void say(){
     System.out.println("ssadfs");
 }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }
    // ctrl +h 查看继承关系
  
}


package Dome02;

/**
 * @author java小白松
 */
// public
    // protected 保护的
    // default 默认的
    //private 私有的
public class Application {
    public static void main(String[] args) {
         Student s1= new Student();
         s1.say();//子类继承了父类就会父类的所有方法
    }
}

package Dome02;

/**
 * @author java小白松
 */
// 学生 is 人
public class Student extends  Person {

}

package Dome02;

/**
* @author java小白松
*/
public class Teacher extends  Person {

}

this关键字和super关键字的比较

package Dome02;

/**
 * @author java小白松
 */
// 父类
// 在Java中所有的类都直接或者间接继承object
public class Person {
   /* private  int  money;
    public  void say(){
        System.out.println("ssadfs");
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }*/
    // ctrl +h 查看继承关系
    protected  String name ="kuansheng";
 public  void print(){
     System.out.println("person");
 }

    public Person() {
        System.out.println("fuleide wucanguozao");
    }
}


package Dome02;

import javax.sound.midi.Soundbank;

/**
 * @author java小白松
 */
// 学生 is 人
public class Student extends  Person {
 private  String name ="qinjianng";
  public  void  test (String name){
      System.out.println(name);//name是形式参数的name对象带着值从main方法里面来
      System.out.println(this.name);//当前类中的值
      System.out.println(super.name);//父类中的值


  }
  public  void  print(){
      System.out.println("student");
  }
   public  void test1(){
       print();// 这个是当前这类中的方法
      this.print();//这个也是当前这个类中的方法
      super.print();// 父类中的方法

   }// 私有的无法被继承

    public Student() {
      super();//这个方法被子类构造器给隐藏了,如果要显示的表示父类的构造器就得在子类的代码的最前面
        System.out.println("zilei de wu can guoz zao");
    }
}


package Dome02;

/**
 * @author java小白松
 */
// public
// protected 保护的
// default 默认的
//private 私有的
public class Application {
    public static void main(String[] args) {
        Student s1= new Student();
        //s1.test("秦疆");//子类继承了父类就会父类的所有方法
     //s1.test1();
    }
}


  • super 注意点:

    1. super调用父类的构造方法,必须在构造方法的第一个位置

    2. super必须只能出现在子类的方法或者构造方法中

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

      vs this

      • this: 本身调用者这个对象
      • super:代表父类对象的应用

      前提:

      • this:没有继承也能使用
      • super:只有继承了才能使用

      构造方法

      • this(); 本类的构造

      • super();父类的构造

uper 注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个位置

  2. super必须只能出现在子类的方法或者构造方法中

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

    vs this

    • this: 本身调用者这个对象
    • super:代表父类对象的应用

    前提:

    • this:没有继承也能使用
    • super:只有继承了才能使用

    构造方法

    • this(); 本类的构造

    • super();父类的构造

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值