内部类
/**
- 现在类A想要同时获得类B C的方法,并且重写
- 因为类是分层级继承,不能同时继承b和c。所以用到内部类
- 用内部类变相的是新 类的多重继承,可以同时继承多个类
- @author Daybreak
*/
class A{
public void testB() {
new InnerB().testB();
}
public void testC() {
new InnerC().testC();
}
private class InnerB extends B{
@Override
public void testB() {
System.out.println("重写之后的testb方法");
}
}
private class InnerC extends C{
@Override
public void testC() {
System.out.println("重写之后的testc方法");
}
}
}
class B{
public void testB() {
}
}
class C{
public void testC() {
}
}
初始化块{ }
//静态代码块
static { //只能用static修饰的属性和方法 }
静态代码块 与 非静态代码块区别
在实际开发中,static静态代码块用在初始化类的静态属性
关键字final
抽象类 abstract class
用abstract 修饰
抽象方法没有方法体
public abstract class Animal {
public abstract void test();
public abstract void move();
}
class Dog extends Animal{
@Override
public void test() {
}
@Override
public void move() {
System.out.println("狗 跑");
}
}
class Fish extends Animal{
@Override
public void test() {
}
@Override
public void move() {
System.out.println("<。)#)))≦ 鱼鱼 游");
}
}
小练习
public abstract class Employee {
public Employee() {
}
int id;
String name;
double salary;
public abstract void work();
}
class CommonEmployee extends Employee{
public void setCommonEmployeeInfo(int id,String name,double salary) {
super.id=id;
super.name=name;
super.salary=salary;
}
public void getCommonEmployeeInfo() {
System.out.println(super.id=id);
System.out.println(super.name=name);
System.out.println(super.salary=salary);
}
public void work() {
System.out.println("普通员工");
}
}
class Manager extends Employee{
double bouns;
public void setManagerInfo(int id,String name,double salary,double bouns) {
super.id=id;
super.name=name;
super.salary=salary;
this.bouns=bouns;
}
public void getManagerInfo() {
System.out.println(super.id=id);
System.out.println(super.name=name);
System.out.println(super.salary=salary);
System.out.println(this.bouns=bouns);
}
public void work() {
System.out.println("领导");
}
}
模板方法设计模式(TemplateMethod)