Java三大特性:
封装、继承、多态;
一、封装:
1.概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2.实现:1)属性私有化;2)提供公有get和set方法;
二、继承:
1.概念:继承是一种关系,比如狗继承动物;
2.好处:子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;
3.语法:class 子类 extends 父类;
//关键字:extends(单继承);implements(实现);
关键字:this(本类引用)(本方法内的局部变量不能用);super(父类引用);
1.方法覆盖原则:
(1)方法名、参数列表、返回值类型和父类相同;
(2)访问修饰符可以相同,或者比父类更宽泛;
(3)覆盖父类后,子类优先执行,可用super调用父类;
2.关键字:this(本类引用);super(父类引用);
(1)super用法1:在子类中使用"super."的形式访问父类中的属性和方法;
(2)super用法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(); } }