java 创建一个抽象类_Java-抽象类
抽象類
含有抽象方法的類就是抽象類
1) 抽象方法:該方法有返回值,有參數,就是沒有方法體,該方法沒有方法實現
2) 抽象方法的格式:
abstract 返回值類型 方法名(參數列表);
3) 抽象類需要靠子類來重寫抽象方法,以實現其功能
public classTest1 {//抽象類:含有抽象方法的類//抽象方法:沒有方法體的方法
public static voidmain(String[] args) {
Taxi taxi=newTaxi();
taxi.name="出租車";
taxi.start();
taxi.run();
taxi.stop();
}
}//定義一個抽象類Car:屬性:名字,價格,速度//方法:啟動,運行,剎車,全是抽象方法
abstract classCar{
String name;doubleprice;intspeed;public abstract voidstart();public abstract voidrun();public abstract voidstop();
}class Taxi extendsCar{//抽象類是依靠子類,來實現其功能(子類重寫抽象方法)
public voidstart() {
System.out.println(name+"行駛");
}public voidrun() {
System.out.println(name+"啟動");
}public voidstop() {
System.out.println(name+"剎車");
}
}
4) 抽象類不能直接實例化(創建對象)
public classTest1 {public static voidmain(String[] args) {//Foo1 foo1=new Foo1();---報錯
}
}abstract classFoo1{abstract voidshow();
}
5) 可以使用抽象類聲明一個對象,然后利用該抽象類的子類來創建對象
格式:抽象類 對象名-->定義對象
對象名=new 子類構造方法-->創建對象
抽象名 對象名=new 子類構造方法
public classTest1 {public static voidmain(String[] args) {
Koo1 koo1=new Koo2(); //抽象類名(父類) 對象名=new 子類的構造方法
koo1.show();
}
}abstract class Koo1{//父類---聲明(定義)對象
public abstract voidshow();
}class Koo2 extends Koo1{//子類---創建對象
public voidshow() {
System.out.println("昨天下雨了");
}
}
6) 父類聲明指向子類引用
格式:父類 對象=new 子類的構造方法
編譯時(javac)?????????? 運行時(java)
用這種方式創建的對象,可以訪問父類的除重寫以外所有的方法,可以訪問子類重寫父類的方法
唯一不能做的事,就是訪問子類獨有的方法
public classTest1 {public static voidmain(String[] args) {
Eoo eoo=newEoo2();
eoo.show();//訪問子類中重寫父類的方法
eoo.print();//父類中的普通方法//eoo.speak();---報錯//不能訪問子類獨有的方法
}
}classEoo{voidshow(){
System.out.println("今天是個好天氣");
}voidprint(){
System.out.println("今天是周一");
}
}class Eoo2 extendsEoo{voidshow(){
System.out.println("天氣好好");//重寫
}void speak(){//子類獨有的方法
System.out.println("說話");
}
}
7) 抽象類跟一般類是一樣的,只是抽象類含有抽象方法(沒有方法體的方法)
抽象類需要靠子類來重寫所有的抽象方法,以實現其功能
創建對象:
1.直接使用子類來聲明和創建對象
2.父類聲明指向子類的對象
public classTest1 {public static voidmain(String[] args) {
Person person=new Worker("張",23,"男",5000);
person.print();
person.show();
}
}//設計Person類型,屬性:姓名,年齡,性別//構造方法:1.空參的構造方法//2.帶(姓名,年齡,性別)的構造方法//方法:show():顯示姓名,年齡屬性//抽象方法print();//設計Worker類型,屬性:姓名,性別,年齡,工資//構造方法:給所有的屬性賦值//方法:重寫print()方法,顯示該對象所有的屬性//
abstract classPerson{
String name;intage;
String sex;
Person(){}
Person(String name,intage,String sex){this.name=name;this.age=age;this.sex=sex;
}voidshow(){
System.out.println(name+","+age);
}public abstract voidprint();
}class Worker extendsPerson{doublesalary;
Worker(String name,int age,String sex,doublesalary){super(name,age,sex);this.salary=salary;
}public voidprint() {
System.out.println(name+","+age+","+sex+","+salary);
}
}
設計模式---工廠模式(了解)
用一個類來幫我們創建和管理對象,就是工廠模式
public classTest1 {//工廠類中用來提供對象的方法,最好設計靜態方法,易于調用
public static voidmain(String[] args) {
Emp emp=EmpFactory.getInstance();
emp.show();;
}
}classEmpFactory{public staticEmp getInstance(){
Emp emp=new Emp("劉",45);returnemp;
}
}classEmp{
String name;intage;
Emp(String name,intage){this.name=name;this.age=age;
}voidshow(){
System.out.println(name+","+age);
}
}
public classTest1 {public static voidmain(String[] args) {
Car car=CarFactory.getInstance(1);
car.name="Bmw";
car.show();
Car car1=CarFactory.getInstance(2);
car1.name="Benz";
car1.show();
}
}//設計一個父類Car,屬性:名字//構造方法:空參構造方法,帶名字的構造方法//方法:show顯示該Car的名字//設計一個Car的子類Bmw,屬性:速度//設計一個Car的子類Benz,屬性:價格//設計一個Car的子類QQ,屬性:顏色//設計一個工廠,可以根據用戶的請求來創建不同的子類對象
classCar{
String name;
Car(){}
Car(String name){this.name=name;
}voidshow(){
System.out.println(name);
}
}class Bmw extendsCar{intspeed;
}class Benz extendsCar{doubleprice;
}class QQ extendsCar{
String color;
}//分析:參數來代表用戶不同的請求//1---BMZ,2---Benz,3----QQ//工廠中獲得對象的方法,可以根據調用參數的不同,返回不同的Car的子類對象
classCarFactory{public static Car getInstance(inttype){
Car car=null;if(type==1){
car=newBmw();
}else if(type==2){
car=newBenz();
}else if(type==3){
car=newQQ();
}returncar;
}
}
總結
以上是生活随笔為你收集整理的java 创建一个抽象类_Java-抽象类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ice安装
- 下一篇: java美元兑换,(Java实现) 美元