1Java三大特性为
java三大特性:封装 继承 和多态
1.1生活中的继承
子承父业
龙生龙,凤生凤,老鼠生来会打洞
你很像你的父亲
游戏里面 大量的继承 比如lol里面英雄都有qwer技能
1.2java 中继承的语法格式
java使用关键字: extends进行继承的操作
继承至少得有两个类
格式:
class B extends A {
}
B类继承了A类,A类是B类的唯一的父类或者叫超类或者叫基类
java中是单继承【一个儿子只能有亲生父亲】
B类是A类的子类
B类继承了A, A的东西(除了私有化的)都可以用!!!
成员属性:
公开的成员属性
子类能继承父类公开的成员属性
私有的成员属性
子类不能继承父类私有的成员属性
成员方法:
公开的成员方法
子类能继承父类公开的成员方法
私有的成员方法
子类不能继承父类私有的成员方法
构造方法:
无参数的构造方法
子类继承了父类,会把子类的无参构造方法执行,并且也会执行父类的无参构造方法。执行循序,先执行父类的无参构造,再执行子类的无参数的构造。
2.子类父类的内存分析图
实例化子类的时候,先执行的父类的构造方法,然后再子类的构造方法
3.super关键【有点鸡肋】
this调用当前对象的成员属性和成员方法。
this调用构造方法
super调用父类的成员属性和成员方法
【注意事项】:
1.必须有继承关系,如果想要使用super关键字
2.super关键字必须写在子类中。意思是让在子类中调用父类的一些东西
3.super.成员属性 只能写在子类的定义的方法中
4.super.方法() 只能写在子类定义的方法中
super调用构造方法:
格式:
super(参数);
【注意事项】:
1.一定要在子类的构造方法中去调用父类的构造方法
2.必须写在第一行
成员变量:
super.blood = 2000; 只能写在子类定义的方法中
成员方法:
super.haPi(); 只能在子类定义的方法中调用
构造方法:
在子类中的构造方法中去调用父类的构造方法。
4.重写【override】
子类通过继承可以使用父类的非私有化的成员方法,但是有的时候父类的方法需求不满足子类的需求了。在不改变父类的方法需求下,可以对父类的方法进行重写
重写条件:
1.必须有继承关系
2.父类的方法必须是公开的
3.子类的方法必须和父类的方法一样(返回值,方法名字,参数)
4.必须在子类中重写
5.重载【overload】
重载的条件
1.必须在同一个类中
2.方法名字必须一样,返回值必须一样,但是参数一定不一样!!!
class Person {
//run这三个方法就是方法的重载
//是方法名字一样 返回值一样 参数列表一定不同!!!
//成员方法
public void run () {
System.out.println("在跑步");
}
public void run(String name) {
System.out.println(name + "在跑步");
}
public void run (String name, int age) {
System.out.println(name + ":" + age + "在跑步");
}
}
public class Demo1 {
public static void main(String[] args) {
Person person = new Person();
person.run();
person.run("老邢");
person.run("帅栋", 37);
}
}
6.instanceof关键字
是java中二元运算符,左边是对象,右边是类。返回值是布尔类型
当左边对象是右边的类或者子类所创建的对象时候,返回true.否则返回false
语法格式:
person instanceof Object
public class Demo1 {
public static void main(String[] args) {
/*是java中二元运算符,左边是对象,右边是类。返回值是布尔类型
当左边对象是右边的类或者子类所创建的对象时候,返回true.否则返回false*/
B b = new B();
A a = new A();
boolean result = b instanceof A;
boolean result1 = a instanceof A;//true
C c = new C();
boolean result2 = c instanceof B;//true
boolean result3 = c instanceof A;//true
System.out.println(result);
}
}
7.抽象类【abstract修饰的类】
7.1abstract关键字
1.abstract修饰成员方法叫抽象方法
2.abstarct修饰类 叫抽象类
【注意事项】:
1.abstract修饰成员方法,但是这个方法没有方法体
2.abstarct修饰的成员方法所在的类,也必须加上abstract修饰
3.abstract修饰的成员方法,没有方法体,没有实现的代码,是一个半成品
4.抽象类下面可以有非抽象的方法
5.抽象类下面可以没有抽象的方法,但是你叫抽象类
6.抽象类不能被实例化
7.抽象类能被继承,但是必须重写抽象方法,非抽象方法可重写可不重写
8.一个类只能继承一个抽象类