this关键字
为了解决局部变量和成员变量的二义性,变量名有歧义而命名的
包
包是为了解决同名类问题。
包可以看成目录,由于包本身即是一种树状结构(目录结构)包的核心作用 :防止类命名冲突
package 包名.子包名.子子包
1>必须把该语句作为Java文件中第一行代码(所有代码之前)
2>包名使用全小写字母组成,命名符合标识符规则
3>父包和子包之间使用点符号(.)分割
3>因为Java的安全机制,自定义包名不允许使用 java 单词作为包名。
包命名原则:一定保持包名唯一,建议使用倒置的域名作为前缀
导包语法
import 类的全路径 ==>类的全路径= 包名+类名
构造器和setter方法的选用
构造器和setter方法都可以给对象设置数据:
构造器,在创建对象的时候设置初始数据,只能初始化一次。
setter方法,创建对象后再设置初始数据,可以设置多次。
继承思想
面向对象继承,把多个类中相同代码放在父类中,由子类继承,用extends连接
public class 父类名{
// 存放多个子类共同的字段和方法
}
public class 子类名 extends 父类名{
// 存放自己特有的(独有的)字段和方法
}
注意:Java中类只支持单继承,但是支持多重继承。也就是说一个子类只能有一个直接的父类,父类也可以再有父类。
1>如果父类中的成员使用public和protected修饰,子类都能继承.
2>如果父类和子类在同一个包中,使用缺省访问修饰的成员,此时子类可以继承到
3>如果父类中的成员使用private修饰,子类继承不到。private只能在本类中访问
父类的构造器,子类也不能继承,因为构造器必须和当前的类名相同
记住一句话:子类继承父类的非私有成员(字段和方法),但构造器除外。
方法覆盖
override 重写,子类重写父类的方法,父类没有该方法,子类就无法重写
直接拷贝父类中方法的定义粘贴到子类中,再重新编写子类方法体,打完收工!
在子类中的某一个方法中需要去调用父类中被覆盖的方法,用super关键字。
如果调用被覆盖的方法不使用super关键字,此时调用的是本类中的方法。
super关键字表示父类对象的意思,更多的操作,后面再讲。
super.fly() 可以翻译成调用父类对象的fly方法。
抽象方法和抽象类
使用abstract修饰的方法,称为抽象方法。
public abstract 返回类型 方法名(参数);
抽象方法的特点:
1>使用abstract修饰,没有方法体,留给子类去覆盖
2>抽象方法必须定义在抽象类或接口中
使用abstract修饰的类,成为抽象类。
public abstract class 类名 {
}
一般的,抽象类以Abstract作为类名前缀,如AbstractGraph,就能看出是抽象类。
抽象类的特点:
1>抽象类不能创建对象,调用没有方法体的抽象方法没有任何意义
2>抽象类中可以同时拥有抽象方法和普通方法
3>抽象类要有子类才有意义,子类必须实现父类的所有的抽象方法,除非子类也是抽象类。