日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础之抽象类

發(fā)布時間:2024/6/21 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础之抽象类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/*
1、抽象類的概述:
動物不應(yīng)該定義為具體的東西,而且動物中的吃,睡等也不應(yīng)該是具體的。
我們把一個不是具體的功能稱為抽象的功能,而一個類中如果有抽象的功能,該類必須是抽象類。

抽象類的特點:A:抽象類和抽象方法必須用abstract關(guān)鍵字修飾B:抽象類中不一定有抽象方法,但是有抽象方法的類必須定義為抽象類C:抽象類不能實例化因為它不是具體的。抽象類有構(gòu)造方法,但是不能實例化?構(gòu)造方法的作用是什么呢?用于子類訪問父類數(shù)據(jù)的初始化D:抽象的子類a:如果不想重寫抽象方法,該子類是一個抽象類。b:重寫所有的抽象方法,這個時候子類是一個具體的類。抽象類的實例化其實是靠具體的子類實現(xiàn)的。是多態(tài)的方式。Animal a = new Cat(); */ /abstract class Animal //抽象類的聲明格式 abstract class Animal {//抽象方法//public abstract void eat(){} //空方法體,這個會報錯。抽象方法不能有主體public abstract void eat();public Animal(){} }//子類是抽象類 abstract class Dog extends Animal {}//子類是具體類,重寫抽象方法 class Cat extends Animal {public void eat() {System.out.println("貓吃魚");} }class AbstractDemo {public static void main(String[] args) {//創(chuàng)建對象//Animal是抽象的; 無法實例化//Animal a = new Animal();//通過多態(tài)的方式Animal a = new Cat();a.eat();} } /*

2、抽象類的成員特點:
成員變量:既可以是變量,也可以是常量。
構(gòu)造方法:有。
用于子類訪問父類數(shù)據(jù)的初始化。
成員方法:既可以是抽象的,也可以是非抽象的。

抽象類的成員方法特性:
A:抽象方法 強制要求子類做的事情。
B:非抽象方法 子類繼承的事情,提高代碼復(fù)用性。

*/ abstract class Animal {public int num = 10;public final int num2 = 20;public Animal() {}public Animal(String name,int age){}public abstract void show();public void method() {System.out.println("method");} }class Dog extends Animal {public void show() {System.out.println("show Dog");} }class AbstractDemo2 {public static void main(String[] args) {//創(chuàng)建對象Animal a = new Dog();a.num = 100;System.out.println(a.num);//a.num2 = 200;System.out.println(a.num2);System.out.println("--------------");a.show();a.method();} } /*

一個類如果沒有抽象方法,可不可以定義為抽象類?如果可以,有什么意義?
A:可以。
B:不讓創(chuàng)建對象。

abstract不能和哪些關(guān)鍵字共存?
private 沖突
final 沖突
static 無意義

*/ abstract class Fu {//public abstract void show();//非法的修飾符組合: abstract和private//private abstract void show();//非法的修飾符組合//final abstract void show(); //非法的修飾符組合static abstract void show();public static void method() {System.out.println("method");} }class Zi extends Fu {public void show() {} }class AbstractDemo3 {public static void main(String[] args) {Fu.method();} } /*

3、貓狗案例
/*
貓狗案例

抽象動物類:成員變量:姓名,年齡構(gòu)造方法:無參,帶參成員方法:吃飯();實現(xiàn):從抽象到具體動物類:成員變量:姓名,年齡構(gòu)造方法:無參,帶參成員方法:吃飯();狗類:繼承自動物類重寫吃飯();貓類:繼承自動物類重寫吃飯();

*/

//定義抽象的動物類 abstract class Animal {//姓名private String name;//年齡private int age;public Animal() {}public Animal(String name,int age) {this.name = name;this.age = age;}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 abstract void eat(); }//定義具體的狗類 class Dog extends Animal {public Dog() {}public Dog(String name,int age) {super(name,age);}public void eat() {System.out.println("狗吃肉");} }//定義具體的貓類 class Cat extends Animal {public Cat() {}public Cat(String name,int age) {super(name,age);}public void eat() {System.out.println("貓吃魚");} }//測試類 class AbstractTest {public static void main(String[] args) {//測試狗類//具體類用法//方式1:Dog d = new Dog();d.setName("旺財");d.setAge(3);System.out.println(d.getName()+"---"+d.getAge());d.eat();//方式2:Dog d2 = new Dog("旺財",3);System.out.println(d2.getName()+"---"+d2.getAge());d2.eat();System.out.println("---------------------------");Animal a = new Dog();a.setName("旺財");a.setAge(3);System.out.println(a.getName()+"---"+a.getAge());a.eat();Animal a2 = new Dog("旺財",3);System.out.println(a2.getName()+"---"+a2.getAge());a2.eat();//練習(xí):測試貓類} /*

4、學(xué)生案例

具體事務(wù):基礎(chǔ)班學(xué)員,就業(yè)班學(xué)員共性:姓名,年齡,班級,學(xué)習(xí),吃飯 分析:基礎(chǔ)班學(xué)員成員變量:姓名,年齡,班級成員方法:學(xué)習(xí),吃飯就業(yè)班學(xué)員成員變量:姓名,年齡,班級成員方法:學(xué)習(xí),吃飯得到一個學(xué)員類。成員變量:姓名,年齡,班級成員方法:學(xué)習(xí),吃飯抽象方法---學(xué)習(xí)(不一樣)普通方法--吃飯(一樣)實現(xiàn):學(xué)員類基礎(chǔ)班學(xué)員就業(yè)班學(xué)員 */ //定義抽象學(xué)員類 abstract class Student {//姓名private String name;//年齡private int age;//班級private String grand;public Student() {}public Student(String name,int age,String grand) {this.name = name;this.age = age;this.grand = grand;}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 String getGrand() {return grand;}public void setGrand(String grand) {this.grand = grand;}//學(xué)習(xí)public abstract void study();//吃飯public void eat() {System.out.println("學(xué)習(xí)累了,就該吃飯");} }//具體基礎(chǔ)班學(xué)員類 class BasicStudent extends Student {public BasicStudent() {}public BasicStudent(String name,int age,String grand) {super(name,age,grand);}public void study() {System.out.println("基礎(chǔ)班學(xué)員學(xué)習(xí)的是JavaSE");} }//具體就業(yè)班學(xué)員類 class WorkStudent extends Student {public WorkStudent() {}public WorkStudent(String name,int age,String grand) {super(name,age,grand);}public void study() {System.out.println("就業(yè)班學(xué)員學(xué)習(xí)的是JavaEE");} }class AbstractTest3 {public static void main(String[] args) {//我僅僅測試基礎(chǔ)班學(xué)員//按照多態(tài)的方式測試Student s = new BasicStudent();s.setName("林青霞");s.setAge(27);s.setGrand("1111");System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGrand());s.study();s.eat();System.out.println("--------------");s = new BasicStudent("武鑫",48,"1111");System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGrand());s.study();s.eat();//就業(yè)班測試留給自己玩}/*

5、公司員工

假如我們在開發(fā)一個系統(tǒng)時需要對員工類進行設(shè)計,員工包含3個屬性:姓名、工號以及工資。 經(jīng)理也是員工,除了含有員工的屬性外,另為還有一個獎金屬性。 請使用繼承的思想設(shè)計出員工類和經(jīng)理類。要求類中提供必要的方法進行屬性訪問。分析:普通員工類成員變量:姓名、工號以及工資。成員方法:工作經(jīng)理類:成員變量:姓名、工號以及工資,**獎金**屬性成員方法:工作實現(xiàn):員工類:普通員工類:經(jīng)理類: */ //定義員工類 abstract class Employee {//姓名、工號以及工資private String name;private String id;private int salary;public Employee() {}public Employee(String name,String id,int salary) {this.name = name;this.id = id;this.salary = salary;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}//工作public abstract void work(); }//普通員工類 class Programmer extends Employee {public Programmer(){}public Programmer(String name,String id,int salary) {super(name,id,salary);}public void work() {System.out.println("按照需求寫代碼");} }//經(jīng)理類 class Manager extends Employee {//獎金private int money; //bonus 獎金public Manager(){}public Manager(String name,String id,int salary,int money) {super(name,id,salary);this.money = money;}public void work() {System.out.println("跟客戶談需求");}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;} }class AbstractTest4 {public static void main(String[] args) {//測試普通員工Employee emp = new Programmer();emp.setName("林青霞");emp.setId("czbk001");emp.setSalary(18000);System.out.println(emp.getName()+"---"+emp.getId()+"---"+emp.getSalary());emp.work();System.out.println("-------------");emp = new Programmer("林青霞","czbk001",18000);System.out.println(emp.getName()+"---"+emp.getId()+"---"+emp.getSalary());emp.work();System.out.println("-------------");/*emp = new Manager();emp.setName("劉意");emp.setId("czbk002");emp.setSalary(8000);emp.setMoney(2000);*///由于子類有特有的內(nèi)容,所以我們用子類來測試Manager m = new Manager();m.setName("劉意");m.setId("czbk002");m.setSalary(8000);m.setMoney(2000);System.out.println(m.getName()+"---"+m.getId()+"---"+m.getSalary()+"---"+m.getMoney());m.work();System.out.println("-------------");//通過構(gòu)造方法賦值m = new Manager("劉意","czbk002",8000,2000);System.out.println(m.getName()+"---"+m.getId()+"---"+m.getSalary()+"---"+m.getMoney());m.work();}

版權(quán)聲明:本文為小平果原創(chuàng)文章,轉(zhuǎn)載請注明:http://blog.csdn.net/i10630226

轉(zhuǎn)載于:https://www.cnblogs.com/dingxiaoyue/p/4948237.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Java基础之抽象类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。