继承:
不能被继承的父类成员:
1.私有成员
2.子类与父类不在同包使用默认访问权限的成员
3.构造方法
访问修饰符protected可以修饰属性和方法、本类、同包、子类可以访问
方法重写:
重写方法和被重写方法必须具有相同的方法名和参数列表
重写方法的返回值类型必须和被重写的方法的返回值类型相同或是其子类
重写方法不能缩小被重写方法的访问权限
overriding:在子集中,根据需求对父级继承的方法进行重新编写,以实现子类需求
先属性后方法
super关键字:
使用super关键字super调用父类公共属性及方法
public class AppleTree extends Crop { //… … 省略private属性定义 public AppleTree(String brand) { //super(参数)在子类构造方法中调用且必须是第一句 super("苹果树",1,0, 2,100); //访问直接父类的构造方法 this.brand = brand; } }
语法:super.<父类属性/父类方法>;
1.super只能出现在子类的方法和构造方法中 2.super调用构造方法时,只能是第一句 3.super不能访问父类的private成员
继承中的构造方法:
构造方法中不允许同时出现this和super语句调用构造方法
构造方法:不能被继承,因此不能重写
简述方法重写的规则
1.方法名相同
public void fangfa(){ System.out.println("父类方法") } public void fangfa(){ System.out.println("子类重写方法"); }
2.参数列表相同
public void fangfa(Sting name){ System.out.println("父类方法") } public void fangfa(Sting name){ System.out.println("子类重写方法"); }
3.返回值类型相同或者是其子类
public Object fangfa(Sting name){ System.out.println("父类方法") } public volatile fangfa(Sting name){ System.out.println("子类重写方法"); }
4.访问权限不能严于父类
Object fangfa(Sting name){ System.out.println("父类方法") } public volatile fangfa(Sting name){ System.out.println("子类重写方法"); }
Java 虚拟机按照先父类后子类的顺序执行一系列的构造方法
父类属性 →父类构造方法→子类属性→子类构造方法
访问修饰符 本类 同包 子类 其他
Private 可用 不可用 不可用 不可用
默认修饰符 可用 可用 不可用 不可用
Protect 可用 可用 可用 不可用
Public 可用 可用 可用 可用
两种 全局变量和局部变量
全局变量所有方法可用
局部变量 声明的方法内可用
静态-方法区(类)
全集变量(变量)-堆(对象)
局部变量-栈(方法)
方法里,不可以定义static变量,即:类变量不能是局部变量
常量,不能重新赋值,必须在声明时赋值
静态代码中不允许使用全局变量
静态方法(类方法):使用static关键字修饰的方法
实例方法:未使用static关键字修饰的方法
使用Static修饰与非private修饰的类成员有何不同?
Static、非private修饰 |
非Static、private修饰 |
|
属性 |
类属性、类变量 |
实例属性、实例变量 |
方法 |
类方法 |
实例方法 |
调用方法 |
类名.属性 类名.方法() 对象.属性 对象.方法() |
对象.属性 对象.方法() |
归属 |
类 |
单个对象 |
Class 类
Object 对象
Stsic 静态
Final 最终的
Private 私有的
Public 公共的
Protect 保护
Extend 继承
Super 超越
Override 重写
Constructor 构造
Overload 重载
Abstract 抽象
Main 主要的
Instance 实例
Method 方法