一、抽象
抽象类:只需要去声明属性和方法的类,不需要具体的实现,具体功能的实现由子类去重写父类的方法
public abstract class Canine {
public abstract void roar();
}
public class Dog extends Canine{
/**
* 重写父类中的抽象方法
*/
@Override
public void roar() {
System.out.println("汪汪叫");
}
}
二、接口
功能的集合,只做功能的声明,没有具体的实现
一切事物均有功能,即一切事物均有接口
/**
*usb接口
*/
public interface USB {
public void concatUSB();
}
/**
**实现
**/
public class Mouse implements USB{
@Override public void concatUSB() {
System.out.println("点击屏幕");
}
}
- 抽象只能单继承,接口可以多实现
- 抽象类中可以有普通的方法,而接口中全部是抽象的方法
- 抽象类中可以有普通成员变量,而接口中成员变量都是常量
当“我属于你的一种”时,使用父子类继承;当“我像你具备某种功能”时,使用接口和实现类
三、多态
向上转型:
- 父类类型 变量名 = new 子类类型();
如:Person p = new Student();
向下转型:
2. 子类类型 变量名 = (子类类型) 父类类型的变量;
如:Student stu = (Student) p; //变量p 实际上指向Student对象
四、内部类
4.1 成员内部类
public class Outer {
private String outName="外部类姓名";
/**
* 在成员的位置定义一个类
*/
class Inner{
private String innerName="内部类姓名";
public void innerMethod(){
System.out.println("访问了:"+outName);
System.out.println("访问了:"+innerName);
}
public String getInnerName() {
return innerName;
}
public void setInnerName(String innerName) {
this.innerName = innerName;
}
}
public Outer(String outName) {
this.outName = outName;
}
}
Outer.Inner inner=new Outer.new.Inner();
4.2 局部内部类
public class PartClass {
public void outMethod(){
/**
* 局部内部类
*/
class InnerPart{
private String innerName="aa";
public void innerMethod(){
System.out.println(innerName);
}
public String getInnerName() {
return innerName;
}
public void setInnerName(String innerName) {
this.innerName = innerName;
}
}
//定义好之后再方法内部创建对象
InnerPart innerPart=new InnerPart();
innerPart.innerMethod();
}
}