1.子类在同一个包下面可以范文父类除了私有private修饰的全部属性和方法java
2.在不一样包下面,子类对象只能访问public修饰的属性和方法数组
3.在子类内部,若是不一样包的状况下,能够访问protected修饰的属性和方法,可是不能访问默认的访问修饰符修饰的属性和方法jvm
4.子类在初始化的时候会先调用父类的默认不带参数构造器,若是没有,就会报错,咱们只有人为的修改ide
(1).将父类添加一个无参数的构造器函数
(2).在子类构造器中手动使用super()声明调用哪一个父类的构造器this
当对象初始化以后,成员变量就会有初始值spa
String null 整型 0 浮点型 0.0 boolean false char (char)0对象
局部变量继承
1.定义的位置不同 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中接口
2.做用范围不同 局部变量:只有方法当中才可使用,出了方法就不能再用 成员变量:整个类全均可以通用。
3.默认值不同 局部变量:没有默认值,若是想要使用,必须手动进行赋值 成员变量:若是没有赋值,会有默认值,规则和数组同样
4.内存的位置不同 局部变量:位于栈内存 成员变量,位于堆内存。
5.生命周期不同 局部变量:随着方法进栈而诞生,随着方法出栈而死亡。 成员变量:随着对象建立而诞生,随着对象被垃圾回收而消失。
全部和动做相关的,都应该放入到方法中
对象是类的实例
也都具备属性和方法
对象都是属于某个类
一切皆对象
注意:对象是 new XXX(),而不是具体的哪一个名字,名字只是一个引用
Book [] books = new Book[50];
The local variable type may not have been initialized 局部变量尚未被赋值
成员变量当对象初始化的时候会自动给上初始值
局部变量不会自动给初始值
若是要给成员变量赋初始值,就只能写在一行,不能再另一行从新赋值
就是为了少写方法名,一样的方法名,只要参数不同,就能够执行不一样的操做
在同一个类中
方法名同样
参数不同 1.参数类型不同 2.参数个数不同 3.参数的顺序不同(不一样类型的顺序)
1.继承
2.子类重写父类的方法
3.方法名同样
4.参数类型,参数个数同样
5.返回值同样
6.注意父类private修饰的方法,子类不能重写
7.子类重写方法的访问修饰符可见度,必须必父类方法的访问修饰符可见度高
8.注意:若是只是方法名同样,参数不同,这个样子是一个子类的重载而已
构造器: 构造器必须和当前的类名相同,所以构造器不能继承!
1.每一个类都默认有构造器
2.默认构造方法就是一个无参数的,没有任何函数体的方法
3.本身手动写构造方法
4.构造方法格式: 访问修饰符 类名([参数...参数]){}
5.构造方法能够重载
6.若是咱们手动写了一个带参数的构造器,会自动的覆盖系统自带的默认构造器
7.习惯:若是手动添加了一个带参数的构造器,最好写一个无参数的构造器
注意: 在new子集的时候会先调用父集的无参数的构造器,带参数的构造器不会自动调用
全部的属性都是private
为每一个属性创建setter和getter方法 (快捷键:shift + alt + s)
这个其实就是为了之后装数据用的一个类
向上转型
向下转型
转型须要的条件:
1.继承关系
2.要有相互引用的关系
3.查看内存图形
表明当前对象自己
有时候须要把当前调用对象进行传递,那么就可使用this替代当前调用对象
在构造器中可使用this([参数])调用本类的其余构造器
指代父类
super() 调用父类的构造器
super()若是放在子类中调用,只能放在子类构造器代码的第一行
只要使用new关键字,就是建立一个新的对象
要注意一个问题.不要以为有时候参数须要一个对象,就直接new 一个对象传过去
1.静态的属性和静态的方法属于整个类
2.静态的值只有一个(基本数据类型能够看出此特色)
3.静态的值只会初始化一次(引用数据类型)
4.静态属性,方法或者静态块会在jvm加载的时候就加载
5.静态变量不能加在方法里面
6.静态方法不能重写
通常状况下,静态的常量属性,咱们通常写为 public static final 数据类型 大写常量名 = 值
判断某个对象是否是某一个类型
1.能够用来修饰变量,若是修饰变量,这个变量咱们就称之为常量,值不能被修改,并且常量必须赋初始值,通常状况下,常量咱们会定义为 public static final 数据类型 大写常量名 = 值
2.若是final修饰方法,表示这个方法不能被重写(实现)
3.若是final修饰类,表示这个类不能被继承
全部类的父类
组合(has-a):一个类是另外一个类的属性
依赖(user-a):一个类是另一个类方法的参数
1.抽象方法必定在抽象类中
2.抽象类和抽象方法确定是被abstract修饰的
3.抽象类不能够用new关键字实例化,实例化一个抽象类没有任何意义
4.若是必定要用抽象类,那么可使用多态的方式
5.虽然抽象类不能实例化,可是也是有构造器的
6.抽象方法不能被private修饰
7.抽象方法不能被static修饰
总结:1.抽象类就是用来被继承的 2.抽象方法就是用来被实现的 3.实现多态
1.接口中的变量所有是静态常量
2.接口中的方法默认是抽象方法
3.JDK1.8以后能够手动声明默认方法和静态方法
4.接口能够多实现,一个类能够实现多个接口
5.接口与接口之间使用extends