Java三大特性:封装、继承、多态

时间:2022-05-26 00:25:06

Java三大特性:

  封装、继承、多态;

一、封装:

  1.概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

  2.实现:1)属性私有化;2)提供公有getset方法;

二、继承:

  1.概念:继承是一种关系,比如狗继承动物;

  2.好处:子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;

  3.语法:class 子类 extends 父类;

  //关键字:extends(单继承);implements(实现);

  关键字:this(本类引用)(本方法内的局部变量不能用)super(父类引用);

  1.方法覆盖原则:

    (1)方法名、参数列表、返回值类型和父类相同;

    (2)访问修饰符可以相同,或者比父类更宽泛;

    (3)覆盖父类后,子类优先执行,可用super调用父类;

  2.关键字:this(本类引用);super(父类引用);

    (1super用法1在子类中使用"super."的形式访问父类中的属性和方法;

    (2super用法2在子类中的首行,用"super()""super(实参)"调用父类的构造方法;

    //没有定义supre()super(实参)则默认在首行提供super()

    //super()this()不可同时存在;

    构造函数继承:默认隐式:super();

    注释:super()函数内传参时,放在函数第一行;

 

例://父类
class father{
    father(){
        System.out.println("father");
    }
    father(int n){
        System.out.println("father:"+n);
    }
}
//子类1
class son1 extends father{
    son1(){
        // super();  默认此处有隐式;
        System.out.println("son1");
    }
    son1(int n){
        super(n);
        System.out.println("son1:"+n);
    }
}
//子类2
class  son2 extends father{
    son2(){
        super(100);
        System.out.println("son2");
    }
    son2(int n){
        System.out.println("son2:"+n);
    }
}
public class test{
    public static void main (String args[]){
        System.out.println("------son1 类继承------");
        son1 s1=new son1();
        son1 s2=new son1(100);
        System.out.println("------son2 类继承------");
        son2 s3=new son2();
        son2 s4=new son2(100);
    }
}

三、多态:

  多态就是对象的多种形态;低耦合,高内聚;

  1.多态实现前提:

    (1)子类继承父类;

    (2)子类重写父类中的方法;

    3)父类的引用指向子类的实例;

    (4)通过父类的引用调用子类中的重写后的方法;

  2.使用方法:

    (1)把父类作为方法的形参,使方法参数类型更为宽泛;

    (2)把父类作为方法的返回值,使方法可以返回不同的子类对象;

  3.instanceof关键字:A instanceof B 判断a是否是b的实例

  4.特点:

    1.成员函数,编译看左边,运行看右边(即子类没有运行父类)

    2.成员变量,统一参考左边;0

    3.静态成员函数,统一参考左边;

  5.多态例子:

//父类
abstract class Animal{
    abstract void eat();
}
//子类1
class Cat extends Animal{
    void eat(){
        System.out.println("吃鱼");
    };
    void ty(){
        System.out.println("猫");
    }
}
//子类2
class Dog extends Animal{
    void eat(){
        System.out.println("吃鱼");
    };
    void ty(){
        System.out.println("狗");
    }
}
//入口
public class test{
    public static void main(String[] args){
//        pub(new Cat());
        Animal c=new Cat();//类型提升,向上转型;
        Cat cat=(Cat)c;//类型转型,向下转型;
        cat.eat();
        cat.ty();
 
    }
    public static void pub(Animal a){
        a.eat();
    }
}