final
修饰类->该类不能被继承;
修饰方法->该方法可以被继承但是不能被重写;
修饰属性->表示该属性能且只能被赋一次值【1.定义的同时初始化 2.构造函数中初始化】
抽象类:abstract
抽象类:一个抽象类通常都含有抽象方法;
含有抽象方法的类必须被标记为abstract类;
抽象类对象无法实例化,但是可以实现多态;
继承抽象类必须重写抽象方法,除非该子类也是抽象类
/*
* 抽象类:含有抽象方法的类必须被标记为抽象类
* 抽象类不一定必须含有抽象方法
*/
public abstract class People {
// 属性----不受抽象类的影响
public String name ;
public String sex;
public final String type ;
/*
* 抽象类不能实例化
* 但也具有构造方法
*/
public People(){
type = "people";
}
// 抽象方法
public abstract void show();
}
/*
* 继承抽象类
*/
public class Student extends People {
// 属性也会自动继承
public final String type ;
public Student(){
type = "student";
}
/*
* 继承抽象类的子类若不是抽象类,则必须重写父类的抽象方法
*/
@Override
public void show() {
System.out.println("I am a "+ type);
}
}
接口:interface
接口没有构造方法;
接口中的方法都是 public abstract,接口中的属性都是public static final,修饰符可部分或全部省略;
接口可以多继承接口,类可以实现多接口;
接口对象无法被定义,但是接口可以实现多态;
实现接口必须重写接口中的方法public不能省略;抽象类也可以实现接口,可以不用重写接口中的方法
【举例:线程的创建,事件的处理,容器的组织方式,serializable接口】
/***************接口1******************/
package com.people;
public interface IDrink {
/*
* 修饰符可以部分省略
*/
public void drink();
}
/***************接口2******************/
package com.people;
public interface IRun {
/*
* 跑不是人类的独有特点,故可以通过接口来实现
*/
public abstract void run();// 修饰符可以部分或全部省略
}
/***************接口3******************/
package com.people;
public interface ISmok {
/*
* 修饰符可以全部省略
*/
void smoking();
}
/***************接口4******************/
package com.people;
public interface ISmokeAndDrink extends IDrink ,ISmok{
/*
* 接口可以多继承接口
*/
}
/***************父类******************/
package com.people;
/*
* 人类 ----抽象类
*/
public abstract class People implements IRun{
/*
* 抽象类实现接口,可以不用重写接口中的方法
*/
public String name;
public String sex;
public int age;
// 思考是人类的最鲜明的特点!!!
public abstract void thinking();
}
/***************子类1******************/
package com.people;
/*
* 子类不是抽象类,继承的抽象方法都必须重写
*/
public class Man extends People implements ISmokeAndDrink{
@Override
public void thinking() {
System.out.println("男人是一种理性动物!!!");
}
@Override
public void run() {
System.out.println("男人跑的快!!!");
}
@Override
public void drink() {
System.out.println("男人大口喝酒!!!");
}
@Override
public void smoking() {
System.out.println("男人一般都抽烟!!!");
}
}
/***************子类2******************/
package com.people;
/*
* 类可以多实现接口
*/
public class Woman extends People implements IDrink ,ISmok{
@Override
public void thinking() {
System.out.println("女人是一种感性动物!!!");
}
@Override
public void run() {
System.out.println("女人跑的慢");
}
@Override
public void drink() {
System.out.println("女人小口喝酒");
}
@Override
public void smoking() {
System.out.println("女人一般不抽烟");
}
}