持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情 1.子类和父类是is-a的关系
2.继承的使用:
继承的关键字:extends;子类使用extends继承和父类公有的属性
3.java 单继承,多实现
4.super:子类访问父类成员:使用super关键字访问,用法和this一样,属于关键字
super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访问父类的private成员
5.子类不可以继承父类的所有资源:、
不能被继承的父类成员:private;
子类与父类在不同包,使用默认访问权限的成员;
构造方法
6.访问修饰符protected
可以修饰属性和方法
本类、同包、子类可以访问
四种访问修饰符的作用范围排序:
public > protected > default > private
2.1.public:用public修饰的类,方法和变量,包内及包外的任何类均可访问 2.2.protected:用protected修饰的类,方法和变量,包内的任何类以及包外继承了该类的子类均可访问
2.3.default:默认修饰符,只有包内的所有类才可以访问
2.4.private:用private修饰的类,方法和变量,只有本类可以访问,包内保外的类都不能访问
7.多重继承关系的初始化顺序(先调用父类属性和构造方法,再调子类的属性和构造方法)
8.方法的重写规则:(构造方法不能被重写)
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类
9.方法重载和方法重写
重写与重载之间的区别
方法重载:
1、同一个类中
2、方法名相同,参数列表不同(参数顺序、个数、类型)
3、方法返回值、访问修饰符任意 4、与方法的参数名无关
方法重写:
1、有继承关系的子类中
2、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同
3、访问修饰符,访问范围需要大于等于父类的访问范围
4、与方法的参数名无关
10.whitePig wp = new whitePig();
// 这里输出的结果不是继承过来的,构造方法不能被继承,是创建的对象自动调用构造方法里面的输出语句
11.System.out.println(wp);System.out.println(wp.toString());
//打印对象打印出来的是object_4.whitePig@6f75e721,默认打印的是toString() 方法
12.Object类的equals()方法
比较两个对象是否是同一个对象, 是则返回true
操作符==
简单数据类型,直接比较值。如1==2 引用类型,比较两者是否为同一对象
(1)Object类的equals()方法与==没区别
(2)当有特殊需求,如认为属性相同即为同一对象时,需要重写equals()
(3)Java.lang.String重写了equals()方法,把equals()方法的判断变为了判断其值
13.instanceof用于判断一个引用类型所引用的对象是否是一个类的实例
14.三元运算符
三目条件运算符(三元运算符)
三目条件运算符,语法格式:
x ? y : z
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
举例:
int score = 80; int x = -100;
String type = score < 60 ?"不及格" :"及格";
intflag = x > 0 ? 1 : (x == 0 ? 0 : -1);
System.out.println("type= " +type);
System.out.println("flag= "+flag);
15.抽象类:(abstract class)
抽象类不能被实例化(不能使用new,抽象类相当于是提前写好的一个方法,具有不确定性,可执行也可不执行,需要执行的时候再去重写 )
抽象类里可以没有抽象方法,但是抽象方法必须在抽象类里
16.abstract 也可以用于方法——抽象方法
抽象方法没有方法体(没有大括号)
抽象方法必须在抽象类里 抽象方法必须在子类中被实现,除非子类是抽象类(非抽象子类必须重写所有抽象父类的的抽象方法)
17.fainal用法