一.繼承
1.定義:子類繼承父類,會繼承父類的屬性和方法
2.語法:extends關(guān)鍵字 子類 extends 父類
3.特點:java中的繼承是單一繼承,子類只能繼承一個父類,但是父類可以有多個子類
4.用途:可以將共性的部分寫到父類中,子類保留自己的個性特征
5.哪些不能被繼承:父類的構(gòu)造方法,私有的屬性和方法
二.方法的重寫
1.必須是子類重寫父類的方法,所以是發(fā)生在兩個類中
2.方法的簽名必須一致,訪問修飾符可以不一樣,但子類不能嚴于父類
三.繼承后的代碼執(zhí)行順序
1.父類的屬性--父類的構(gòu)造方法--子類的屬性--子類的構(gòu)造方法
四.supper關(guān)鍵字
1.定義:代表父類的引用
2.作用:可以調(diào)用父類的屬性和方法,包括構(gòu)造方法
3.注意:如果調(diào)用父類構(gòu)造方法,必須是在子類構(gòu)造方法中的第一句
五.final關(guān)鍵字
1.定義:最終版本
2.可以修飾:類,屬性,方法
3.作用:
修飾類:該類不能被繼承
修飾屬性:叫常量,聲明時必須賦值,并且不能改變.常量的命名規(guī)則是全部大寫
修飾方法:不能被重寫
六.多態(tài)
1.一種事務(wù)的多種形態(tài)。
2.實現(xiàn)步驟:
a.子類繼承父類,重寫父類的方法
b.父類作為形參來代替所有的子類
c.在調(diào)用時,用父類的類型指向子類的對象
七.例子
1.請設(shè)計多個類,程序員,醫(yī)生,演說家,歌手四個類
設(shè)計相關(guān)屬性和職業(yè)行為,并且看怎么優(yōu)化設(shè)計
共性的屬性有:姓名,年齡,性別,職業(yè)
共性的方法有:自我介紹,吃飯,睡覺
特性的方法有:各自如何賺錢
特有的屬性:各自特有的屬性
2.人物采訪:
要求:主持人主持一檔節(jié)目,叫做人物訪談,可以采訪各種職業(yè)的人
采訪過程:
1.主持人先報廣告贊助商
2.被采訪人自我介紹
3.被采訪人介紹自己的賺錢方式
4.主持人說下集預(yù)告
設(shè)計程序,要求主持人可以采訪任何類型的職業(yè)人,采訪流程不變。
加一個新的采訪職業(yè)。老師
package com.demo1106;/** * 職業(yè)案例 * @author allen * */public class Profession { public static void main(String[] args) { Programmer p = new Programmer(); p.coding(); }}class Person { //姓名,年齡,性別,職業(yè) String name; int age; String sex; String profession; final String HELLO = "你好";//常量,一旦聲明就必須賦值,并且不能被修改 static{ System.out.println("我是父類靜態(tài)"); } public Person() {//子類繼承父類,構(gòu)造子類必先構(gòu)造父類 System.out.println("我是父類構(gòu)造方法"); } public void eat(){ System.out.println("吃米飯"); } public void sleep(){ System.out.println("睡覺八小時"); } public void intrduce(){ System.out.println("我叫" name); }}class Programmer extends Person{ static{ System.out.println("我是子類靜態(tài)"); } public Programmer() { super(); System.out.println("我是子類構(gòu)造方法"); } public void coding(){ super.intrduce(); System.out.println("我賺錢的方法時:我會編碼"); } @Override//這個叫注解 此處的含義是告訴java這個方法是重寫父類的方法,他有檢查功能 public void sleep(){ System.out.println("我要加班,睡覺4個小時"); } }class Doctor extends Person{ String level;//級別 public void operation(){ System.out.println("我賺錢的方式:做外科手術(shù)"); } @Override public void eat(){ System.out.println("我吃面,還不用面條鮮"); }}
?
package com.demo1106;/** * 任務(wù)采訪案例 */public class Interview { public static void main(String[] args) { Compere cp = new Compere();// People p = new Actor("芙蓉姐姐", "網(wǎng)紅", "海文公司");// 父類的類型指向子類的對象 People p = new Doctorer("某某某", "主任醫(yī)師", "長沙湘雅附二"); cp.doProgram(p); } }class Compere{ String name; //主持節(jié)目 public void doProgram(People p){ //1234 System.out.println("我是主持人:" name ",感謝CCTV,所有TV"); p.introduce(); p.makeMoney(); System.out.println("我是主持人,感謝收看本級,下期再見"); } // public void doProgramToActor(Actor a){// //1234// System.out.println("我是主持人:" name ",感謝CCTV,所有TV");// a.intrduce();// a.makeMoney();// System.out.println("我是主持人,感謝收看本級,下期再見");// }// // public void doProgramToLawyer(){// //1234// }}//第一次優(yōu)化//將被采訪人的自己的行為規(guī)范到被采訪人類中//將該類作為形參傳遞給主持人的主持節(jié)目方法class Doctorer extends People{ //String name;來源于父類 String level;//自己值留下特征 //String company;//就職單位 @Override public void introduce(){ System.out.println("我是:" name ",我的級別是:" level ",我就職于:" company); } public Doctorer(String name,String level,String company) { this.name = name; this.level = level; this.company = company; } @Override public void makeMoney(){ System.out.println("我賺錢的方式是做手術(shù)做一半要紅包"); }}class Actor extends People{// private String name; private String type;// private String company; public Actor(String name, String type, String company) { this.name = name; this.type = type; this.company = company; } @Override public void introduce(){ System.out.println("我是:" name ",我就職于:" company); } @Override public void makeMoney(){ System.out.println("我賺錢的方式是潛規(guī)則上位"); }}//第二次優(yōu)化://1可以將所有被采訪者抽取他們的共性到一個父類中。//2被采訪者可以繼承這個父類并且重寫父類中的方法//3可以將主持人中的主持方法參數(shù)由原來的被采訪者改為他們的父類class People{ String name; String company; public void introduce(){ } public void makeMoney(){ }}
package com.demo1106;//繼承的語法案例public class Demo{ public static void main(String[] args) { Children c = new Children(); c.name = "張三瘋"; c.eat(); }}class Father { String name; int age; String sex; public void eat(){ System.out.println("我喜歡吃米飯"); } public void run(){ System.out.println("每分鐘跑200米"); }}class Children extends Father{ String characate; public void play(){ System.out.println("我們喜歡擼啊擼"); }}
/* * 1.請設(shè)計多個類,程序員,醫(yī)生,演說家,歌手四個類設(shè)計相關(guān)屬性和職業(yè)行為,并且看怎么優(yōu)化設(shè)計共性的屬性有:姓名,年齡,性別,職業(yè)共性的方法有:自我介紹,吃飯,睡覺特性的方法有:各自如何賺錢特有的屬性:各自特有的屬性 * */package com.class1106;public class Class01 { public static void main(String[] args) { // TODO Auto-generated method stub Person pg=new Programmer(); pg.introduce(); pg.eat(); pg.sleep(); pg.getmoney(); }}class Person{ String name; int age; String sex; String profession; public void introduce(){ System.out.println("我是" name ",性別是" sex ",今年" age "歲" ",職業(yè)是" profession); } public void eat(){ System.out.println("我會吃飯"); } public void sleep(){ System.out.println("我還會睡覺"); } public void getmoney() { }}class Programmer extends Person{ String thought; public void getmoney() { System.out.println("我通過寫代碼賺錢"); }}class Doctor extends Person{ String cloth; public void getmoney(){ System.out.println("我通過給人治病賺錢"); }}class Speaker extends Person{ String eloquence; public void getmoney(){ System.out.println("我通過演講賺錢"); }}class Singer extends Person{ String sound; public void getmoney() { System.out.println("我通過唱歌賺錢"); }}
/* * 2.人物采訪:要求:主持人主持一檔節(jié)目,叫做人物訪談,可以采訪各種職業(yè)的人采訪過程: 1.主持人先報廣告贊助商 2.被采訪人自我介紹 3.被采訪人介紹自己的賺錢方式 4.主持人說下集預(yù)告設(shè)計程序,要求主持人可以采訪任何類型的職業(yè)人,采訪流程不變。加一個新的采訪職業(yè)。老師 */package com.class1106;public class Class02 { public static void main(String[] args) { // TODO Auto-generated method stub Host h=new Host(); People p1=new Doctor1("華佗",100,"醫(yī)生","院長"); h.interview(p1); People p2=new Teacher1("曹操",111,"老師","三國軍事學(xué)院"); h.interview(p2); }}class Host{ String name="陳魯豫"; public void interview(People p) { System.out.println("我是主持人" name ",本節(jié)目由五糧液冠名播出"); p.introduce1(); p.makemoney(); System.out.println("本期節(jié)目到這里就結(jié)束了,感謝cctv,我們下期再見"); }}class People{ String name; int age; String profession; public void introduce1() { } public void makemoney() { } }class Doctor1 extends People{ String level; public Doctor1(String name,int age,String profession,String level){ this.name=name; this.age=age; this.profession=profession; this.level=level; } public void introduce1() { System.out.println("我是" name ",今年" age "歲," "我的職業(yè)是" profession ",我的級別是" level); } public void makemoney() { System.out.println("我是通過做手術(shù)賺錢的"); }}class Teacher1 extends People{ String school; public Teacher1(String name,int age,String profession,String school) { this.name=name; this.age=age; this.profession=profession; this.school=school; } @Override public void introduce1() { System.out.println("我是" name ",今年" age "歲," "我的職業(yè)是" profession ",我所在的學(xué)校是" school); } @Override public void makemoney() { System.out.println("我是通過教學(xué)生知識賺錢的"); }}
八.作業(yè)
做一個學(xué)員管理系統(tǒng)
功能:1.添加學(xué)員
2.查看學(xué)員信息
3.刪除學(xué)員
4.修改學(xué)員
思路:創(chuàng)建學(xué)員對象
創(chuàng)建學(xué)員對象數(shù)組
每個功能對應(yīng)一個方法,可以反復(fù)使用
提示:
---------------------------------
歡迎使用學(xué)員管理
---------------------------------
功能選擇:
1.添加學(xué)員
2.查看學(xué)員信息
3.刪除學(xué)員
4.修改學(xué)員
請選擇:1
添加學(xué)員:
姓名:杜典
年齡:16
性別:女
電話:15232654565
籍貫:長沙
添加成功!
是否繼續(xù)?y/n:y
功能選擇:
1.添加學(xué)員
2.查看學(xué)員信息
3.刪除學(xué)員
4.修改學(xué)員
請選擇:2
姓名 年齡 性別 電話 籍貫
杜典 16 女 152656545 長沙
李祥 18 男 154854623 岳陽
是否繼續(xù)?y/n:y
功能選擇:
1.添加學(xué)員
2.查看學(xué)員信息
3.刪除學(xué)員
4.修改學(xué)員
請選擇:3
請輸入要刪除的學(xué)員姓名:李祥
刪除成功!
是否繼續(xù)?y/n:y
功能選擇:
1.添加學(xué)員
2.查看學(xué)員信息
3.刪除學(xué)員
4.修改學(xué)員
請選擇:4
請輸入要修改的學(xué)員姓名:杜典
姓名:哈哈
年齡:88
性別:女
電話:15232654565
籍貫:常德
修改成功!
是否繼續(xù)?y/n:y
功能選擇:
1.添加學(xué)員
2.查看學(xué)員信息
3.刪除學(xué)員
4.修改學(xué)員
請選擇:2
姓名 年齡 性別 電話 籍貫
哈哈 88 女 152656545 長沙
李祥 18 男 152454544 常德
package com.class1104;import java.util.Scanner;public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub //菜單各種詢問,各種調(diào)用 Start st=new Start(); int s1; String s2; StuManager sm=new StuManager(); do{ st.select(); Scanner sc=new Scanner(System.in); System.out.print("請選擇:"); s1=sc.nextInt(); switch(s1) { case 1: System.out.println("添加學(xué)員:"); sm.addStu(); System.out.println("添加成功!"); break; case 2: sm.queryStu(); break; case 3: sm.deleteStu(); break; case 4: sm.updateStu(); break; default: System.out.println("輸入錯誤"); break; } System.out.print("是否繼續(xù)?y/n:"); s2=sc.next(); System.out.println(); }while(s2.equals("y")); }}class Start{ public Start() { for(int i=0;i<25;i ) { System.out.print("-"); } System.out.println(); System.out.println(" 歡迎使用學(xué)員管理"); for(int i=0;i<25;i ) { System.out.print("-"); } System.out.println(); } public void select() { System.out.println("功能選擇:"); System.out.println(" 1.添加學(xué)員"); System.out.println(" 2.查看學(xué)員信息"); System.out.println(" 3.刪除學(xué)員"); System.out.println(" 4.修改學(xué)員"); }}class Student{ // 各種屬性。要求封裝 private String name; private int age; private String sex; private String phone; private String place; public void setName(String name) { this.name=name; } public String getName() { return name; } public void setAge(int age) { this.age=age; } public int getAge() { return age; } public void setSex(String sex) { this.sex=sex; } public String getSex() { return sex; } public void setPhone(String phone) { this.phone=phone; } public String getPhone() { return phone; } public void setPlace(String place) { this.place=place; } public String getPlace() { return place; }}// 學(xué)員管理類class StuManager{ Student stu[]=new Student[50]; Scanner sc1=new Scanner(System.in); public void addStu() { Student stu1=new Student(); for(int i=0;i<stu.length;i ) { if(stu[i]==null) { stu[i]=stu1; break; } } System.out.print("姓名:"); stu1.setName(sc1.next()); System.out.print("年齡:"); stu1.setAge(sc1.nextInt()); System.out.print("性別:"); stu1.setSex(sc1.next()); System.out.print("電話:"); stu1.setPhone(sc1.next()); System.out.print("籍貫:"); stu1.setPlace(sc1.next()); } public void queryStu() { System.out.print("姓名" "\t"); System.out.print("年齡" "\t"); System.out.print("性別" "\t"); System.out.print("電話" "\t"); System.out.print("籍貫" "\t"); for(int i=0;i<stu.length;i ) { if(stu[i]!=null) { System.out.println(); System.out.print(stu[i].getName() "\t"); System.out.print(stu[i].getAge() "\t"); System.out.print(stu[i].getSex() "\t"); System.out.print(stu[i].getPhone() "\t"); System.out.print(stu[i].getPlace() "\t"); } } } public void deleteStu() { System.out.print("請輸入要刪除的學(xué)員姓名:"); String name1=sc1.next(); boolean b1=false; for(int i=0;i<stu.length;i ) { if(stu[i]!=null) { if(stu[i].getName().equals(name1)) { b1=true; stu[i]=null; int j=i; while(j<stu.length-1) { stu[j]=stu[j 1]; j ; if((j 1)==stu.length-1) { stu[j 1]=null; } } i--; } } } if(b1) { System.out.println("刪除成功!"); }else{ System.out.println("未找到該學(xué)員!"); } } public void updateStu() { System.out.print("請輸入要修改的學(xué)員姓名:"); String name2=sc1.next(); boolean b2=false; for(int i=0;i<stu.length;i ) { if(stu[i]!=null) { if(stu[i].getName().equals(name2)) { b2=true; System.out.print("姓名:"); stu[i].setName(sc1.next()); System.out.print("年齡:"); stu[i].setAge(sc1.nextInt()); System.out.print("性別:"); stu[i].setSex(sc1.next()); System.out.print("電話:"); stu[i].setPhone(sc1.next()); System.out.print("籍貫:"); stu[i].setPlace(sc1.next()); } } } if(b2) { System.out.println("修改成功!"); }else{ System.out.println("未找到該學(xué)員!"); } }}
?
來源:http://www.icode9.com/content-4-110201.html