java接口文件定义类_Java入门笔记(四)类、包和接口
一、類 class
public class Person{
String name;
int age;
Person(String name, int age){
this.name = name;
this.age = age;
}
void sayHello(){
System.out.println("Hello!");
}
}
1. 屬性
a. 字段
也就是成員變量,在構造方法中進行初始化,沒有指針的概念,需要訪問時直接使用p.name的方法
仍舊可以用this.表示域內的變量
b. 方法
構造方法
constructor,方法名與類名相同,如果不定義構造方法,系統會定義一個默認構造方法
this中還可以使用this調用另一構造方法,如在person類中添加
Person(){
this("lilei", 0); // 這條調用語句要放在第一行
}
方法重載
方法的參數個數或者參數的類型不同,通過重載可以實現多態(polymorphism)
c. 修飾符
訪問修飾符()+其他修飾符(abstract等)
訪問修飾符
public(非子類、子類、同包類、自身)、protected(子類、同包類、自身)、private(自身),默認(同包類、自身)
字符用private修飾從而更好地封裝和隱藏,但是可以用setter和getter暴露出來,bean規范
其他修飾符
static
靜態的,可以修飾內部類和成員
不保存在某個對象的內存中,而是存儲在公共存儲單元中,如System類的in和out
屬于整個類,不能操縱某個對象的成員變量,只能調用static域或者static方法
不能訪問實例變量,不可以使用this和super
使用類名直接調用static方法
import static
final
最終的,不可改變的,可以修飾類、成員、局部變量
如果修飾類,表示這個類不可以被繼承
如果修飾方法,就是不能被子類覆蓋的方法
如果修飾字段,那么一旦給定值,就不可以修改,且必須顯式賦值(定義時賦值或構造函數總能賦值)
如果修飾局部變量,可以從變量中取值,final a = b;
static final可以表示常量,如Integer.MAX_VALUE,如果不給初始值,就默認進行初始化
abstract
抽象的,不可實例化的,可以修飾類和成員
如果修飾類,該類不可以被實例化,不可以new
如果修飾方法,則不需要實現,只聲明即可
如果一個類中包含了抽象方法,那么這個類就要被聲明為abstract類,而在子類中實現,如果子類中仍然沒有實現,那么子類也需要abstract
2. 繼承
class Teacher extends Person{
String school;
String subject;
void teach(){}
}
子類(subclass)、父類或超類(superclass)
父類包括所有直接或間接被繼承的類,一個子類只能直接繼承于1個類,子類可以繼承、修改、添加父類的狀態和行為,但是構造方法是不能夠被繼承的
沒有繼承關系則類默認為java.lang.Object對象
a. 方法覆蓋 Override
@Override
void sayHello(){
System.out.println("Hello everybody!");
}
b. 方法重載
void sayHello(Teacher another){
System.out.println("Hey!");
}
c. super
可以用來訪問父類的字段和方法,構造方法不能被繼承,但是使用super可以調用父類的構造方法
Teacher(String name, int age, String school){
super(name, age);
...
}
d. 父類子類的轉換
子類對象可以視為父類的一個對象
父類對象不能當做子類的對象
如果一個方法的形參是父類對象,調用方法時可以用子類
如果父類引用的實際上是一個子類對象,那么可以強制類型轉換為子類對象的引用,如Person liu = new Teacher(xxx);可以使用Teacher wang = (Teacher) liu;
二、包 package
import package[.pkg[.xxxx]]
包實際是為了解決名字空間(存儲路徑)問題和可訪問性問題(同一個包里面的各個類可以互相訪問)
包層次的根目錄由CLASSPATH決定,如果沒有package語句,就是無名包
java編譯器自動導入java.lang
javac可以將.class文件放入想用的目錄,使用-d指明包的根目錄,運行程序時指明含有main的類名
java和javac可以用-classpath指明引用的類的路徑,也可以設置系統變量
三、接口 Interface
接口就是一個高度抽象的類,用來描述某種特征,所有的方法都是public abstract,java8以上還可以聲明static方法以及具有實現的方法
實現接口時需要使用implements,可以實現多繼承,與繼承是無關的
面向接口編程而不是面向實現,Interface = new class()
可以實現不相關類的相同特征,通過接口可以指明多個類需要實現的方法
接口中定義的常量可以被實現該接口的多個類共享,通常全部大寫
interface Transport{
int INITIAL = 100;
double getSpeed();
}
public Car implements Transport{}
四、語法小結
完整的類的定義
[public] [abstract | final] class [extends ]
[implements] [InterfaceNameList(,分割)]{
[public | protected | private] [static] [final] [transient] [volatile] type variableName;
[public | protected | private] [static] [final | abstract] [native] [synchronized] returnType methodName()[throws]
}
完整的接口的定義
[public] interface InterfaceNmae [extends superInterfaceList]{
type constantName = Value;
returnType methodName();
|
固定聲明方式
構造方法
className(){}
main方法
public static void main(String args[])
finalize()方法
protected void finalize() throws throwable{}
完整java文件
package packageName; // 只能有1個
import packageName.xxx.*;
public classDefinition{} // public的類的定義 0或1個
interfaceDefinition and classDefination //0或多個
總結
以上是生活随笔為你收集整理的java接口文件定义类_Java入门笔记(四)类、包和接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 只去除英文_如何使用 Py
- 下一篇: 10 3 java_10.3 UiPat