44.final關鍵字(筆試中常常考到)this
(1)若是final修飾在變量上這個變量不能被修改繼承
(2)final能夠修飾在屬性上,要麼直接給初始值,要麼在構造器中給初始化,若是存在多個構造器,每個構造器裏面要有final這個屬性的初始化class
(3)final修飾在方法上不能被覆寫變量
(4)final能夠修飾在類上,若是一個類被final修飾就不能被繼承語法
class Person{
String name;
//final修飾變量變量不能被改變,修飾屬性要給初始值
final int age=10;
//修飾屬性沒有給初始值的能夠在構造器中給初始化,若是存在多個構造器,每個構造器裏面要有final這個屬性的初始化
final int height;
public Person(){
this.height=175;
}
public Person(String name){
this.name=name;
this.height=175;
}
//final修飾方法,這個方法不能被覆寫
final public void run(){
System.out.println(name+"在跑步");
}
}
//final修飾類,這個類不能被繼承
final class Child{
}
class Student extends Person{
public static void main(String[] args){
Student s=new Student();
s.run();
}
}方法
45.抽象類筆試
當多個具體的實體類存在着共同的行爲,可是有不一樣的表現,咱們在父類繼承過程當中,父類的方法具體實現不肯定,可是能肯定的是他們都有這種行爲,咱們把這種行爲方法做爲抽象方法static
語法:new
abstract class 類名{實例化
屬性
方法
}
注意:抽象類中能夠沒有抽象方法,可是抽象方法的類必定是抽象類
特色:(1)抽象類不能實例化,只能被繼承,而後實例化子類
(2)繼承了抽象類的非抽象類必須實現抽象類全部的抽象方法
(3)抽象類也能夠繼承抽象類,這樣不須要實現父抽象類的方法,可是繼承了這個子抽象類的非抽象類必須實現父子抽象類的全部的抽象方法
(4)抽象類的抽象方法不能和private、final、static共存
abstract class Person1{ String name; public Person1(){ } public Person1(String name){ this.name=name; } //抽象類裏面不必定有抽象方法,可是有抽象方法的類必須是抽象類,並且抽象方法不能有主體 public abstract void run(); } abstract class Child1 extends Person1{ public abstract void sleep(); } class Student1 extends Child1{ //抽象方法必須在繼承的非抽象子類中所有實現 public void run(){ System.out.println("在跑步"); } public void sleep(){ System.out.println("在睡覺"); } public static void main(String[] args){ Student1 s=new Student1(); s.sleep(); s.run(); } }