第六章 面向对象(下)
1.final关键字和static关键字
2.抽象类
public abstract class Animal {
public abstract void eat();
public void sleep(){
System.out.println("睡觉");
}
}
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
public abstract class Dog extends Animal{
}
public class Test {
public static void main(String[] args) {
Animal a=new Cat();
a.eat();//猫吃鱼
a.sleep();//睡觉
}
}
抽象类案例:两个班级的老师
public abstract class Teacher {
private int age;
private String name;
public Teacher(){};
public Teacher(int age,String name){
this.age=age;
this.name=name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void teach();
}
public class BasicTeacher extends Teacher {
public BasicTeacher(){}
public BasicTeacher(int age,String name){
super(age,name);
}
@Override
public void teach() {
System.out.println("基础班老师讲JavaSE");
}
}
public class WorkTeacher extends Teacher{
public WorkTeacher(){}
public WorkTeacher(int age,String name){
super(age,name);
}
@Override
public void teach() {
System.out.println("就业班老师讲JavaEE");
}
}
public class Test {
public static void main(String[] args) {
Teacher aa=new BasicTeacher(38,"Lily");
System.out.println(aa.getAge()+"-----"+aa.getName());
aa.teach();
Teacher bb=new WorkTeacher();
bb.setAge(28);
bb.setName("Jack");
System.out.println(bb.getAge()+"-----"+bb.getName());
bb.teach();
}
}
结果:
38-----Lily
基础班老师讲JavaSE
28-----Jack
就业班老师讲JavaEE
Process finished with exit code 0
3.接口
public interface Inter {
public int num1=10;
public final int num2=20;
public abstract void show();
}
public class InterClass implements Inter{
public InterClass(){
super();//默认用Object的构造方法
}
@Override
public void show() {
}
}
public class Test {
public static void main(String[] args) {
Inter a=new InterClass() ;
System.out.println(a.num1);//10
System.out.println(a.num2);//20
System.out.println(Inter.num1);//10
System.out.println(Inter.num2);//20
}
}
4.类,接口之间的关系:
5.抽象类与接口
案例1:猫狗跳高
public abstract class Animal {
private String name;
private int age;
public Animal(){}
public Animal(String name,int age){
this.name=name;
this.age=age;
}
public abstract void eat();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Cat extends Animal implements Jump{
public Cat(){}
public Cat(String name,int age){
super(name,age);
}
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void jump() {
System.out.println("猫要跳高高");
}
}
public class Dog extends Animal implements Jump {
public Dog(){}
public Dog(String name,int age){
super(name,age);
}
@Override
public void jump() {
System.out.println("狗要跳高高");
}
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
public interface Jump {
public abstract void jump();
}
public class Test {
public static void main(String[] args) {
Cat aa = new Cat("MiFei", 3);
System.out.println(aa.getName()+"---"+aa.getAge());
aa.eat();
aa.jump();
Dog bb = new Dog("Popy", 1);
System.out.println(bb.getName()+"---"+bb.getAge());
bb.eat();
bb.jump();
}
}
结果:
MiFei---3
猫吃鱼
猫要跳高高
Popy---1
狗吃骨头
狗要跳高高
Process finished with exit code 0
案例2:
6.包