一、下溯造型
下溯造型前必须有上溯造型
二、关于私有方法是否被继承
三、final
可修饰常量
可修饰方法,不能被重写
可修饰类,修饰的类不能被继承
四、abstract 抽象
1、修饰类,叫抽象类
(1)抽象类中可以有普通的成员变量
(2)抽象类中可以有非抽象方法
(3)抽象类可以有构造方法,但是不能被创建对象
(4)抽象类的子类要么全部重写抽象类中的抽象方法,要么子类抽象
2、修饰方法,叫抽象方法
(1)抽象方法必须在抽象类中
(2)抽象方法不能有方法体,即{},而用;代替
implement 实现(即重写抽象方法)
abstract 与 final是不能同时出现的
五、接口
interface
接口中的成员量由public和final和static修饰
接口中方法由public和abstract修饰
jdk1.8以前接口中所有方法必须是抽象方法
接口没有构造方法,更不能创建对象
接口存在是为了弥补单继承的不足,也相当于制定了一种规范,它的的实现类就要遵守这种规范
java中的类可以单继承一个类,实现多个接口
java中的接口可以多继承
建议先用实现接口,继承父类慎用
六、内部类
1、成员内部类
public class Outer {
public class Inner{
public void say() {
System.out.println("haha");
}
}
public static void main(String[] args) {
new Outer().new Inner().say();
}
}
public class Outer {
public class Inner{
public void innerSay() {
System.out.println("haha");
}
}
public void outerSay() {
new Inner().innerSay();
}
public static void main(String[] args) {
new Outer().outerSay();
}
}
2、局部内部类
注意:局部内部类中不能修改所在方法的变量
public class Outer {
public void outerSay() {
class Inner{
public void InnerSay() {
System.out.println("haha");
}
}
Inner inner = new Inner();
inner.InnerSay();
}
public static void main(String[] args) {
new Outer().outerSay();
}
}
3、静态内部类
静态内部类无法访问非静态成员
public class Outer {
static int a;
static class Inner{
public void innerSay() {
System.out.println("haha");
}
}
public static void main(String[] args) {
Outer.Inner inner = new Outer.Inner();
inner.innerSay();
}
}
4、匿名内部类
有时,如果只需要一次子类或实现类对象,没有必要创建一个类,就使用匿名内部,在匿名内部类中重写方法即可
public interface Flyable {
void fly();
void haha();
}
public static void main(String[] args) {
Flyable f = new Flyable() {
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("栽愣愣的飞");
}
@Override
public void haha() {
// TODO Auto-generated method stub
}
};
f.fly();
f.haha();
}
七、内部类的好处
弥补了单继承的不足
public class Child {
public class InnerFather{
public void makeMoney() {
}
}
public class InnerMother{
public void loseMoney() {
}
}
public void haha() {
new InnerFather().makeMoney();
}
public void hehe() {
new InnerMother().loseMoney();
}
}
八、instanceof
对象 instanceof 类
判断对象是否是该类的