面向對象 抽象(abstract)

面向對象 抽象(abstract)

抽象類的概述

  • A:抽象類概述
    • 抽象就是看不懂的
  • B:抽象類特點
    • a:抽象類和抽象方法必須用abstract關鍵字修飾
      • abstract class 類名 {}
      • public abstract void eat();
    • b:抽象類不一定有抽象方法,有抽象方法的類一定是抽象類或者是接口
    • c:抽象類不能實例化那么,抽象類如何實例化呢?
      • 按照多態的方式,由具體的子類實例化。其實這也是多態的一種,抽象類多態。
    • d:抽象類的子類
      • 要么是抽象類
      • 要么重寫抽象類中的所有抽象方法
  • C:案例演示
    • 抽象類特點
抽象類成員特點
  • A:抽象類的成員特點
    • a:成員變量:既可以是變量,也可以是常量。abstract是否可以修飾成員變量?不能修飾成員變量
    • b:構造方法:有。
      • 用于子類訪問父類數據的初始化。
    • c:成員方法:既可以是抽象的,也可以是非抽象的。
  • B:案例演示
    • 抽象類的成員特點
  • C:抽象類的成員方法特性:
    • a:抽象方法 強制要求子類做的事情。
    • b:非抽象方法 子類繼承的事情,提高代碼復用性。

抽象類 之 葵花寶典

public class Test_葵花寶典 {public static void main(String[] args) {岳不群  小岳子 = new 岳不群();小岳子.自宮();}}
abstract class 葵花寶典{  //可以了理解為 葵花寶典是抽象的武功
public abstract void 自宮();  //想要練成葵花寶典  必須自宮,由于自宮方法很多所以用到抽象方法
}class 岳不群 extends 葵花寶典{
public void 自宮(){System.out.println("用牙簽");
}   
}class 林平之 extends 葵花寶典{
public void 自宮(){System.out.println("用指甲刀");
}
}

抽象類 之 貓狗

  • 具體事物:貓,狗

    • 共性:姓名,年齡,吃飯
    • 貓的特性:抓老鼠
    • 狗的特性:看家

    public class Text_2{

    public static void main(String[] args) {Cat c = new Cat("加菲",8);
    System.out.println(c.getName()+ "..." + c.getAge());
    c.eat();
    c.catchMousr();Dog d = new Dog("八公",30);
    System.out.println(d.getName() + "..." + d.getAge());
    d.eat();
    d.lookHome();
    }
    }abstract class Animal{
    private String name;
    private int age;public Animal(){}public Animal(String name,int age){this.name = name;this.age = age;
    }
    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 abstract void eat(); // 吃飯      由于不同的動物的吃飯方法不同,所以這里定義吃飯這個方法為abstract方法,因此,Animal類亦應該定義為abstract類
    }class Cat extends Animal{public Cat(){}public Cat(String name,int age){super(name,age);
    }public void eat(){                                  //貓的吃飯法方法System.out.println("貓吃魚");
    }
    public void catchMousr(){                    //貓的抓老鼠方法System.out.println("抓老鼠");
    }class Dog extends Animal{             
    public Dog(){}
    public Dog(String name,int age){super(name,age);
    }public void eat(){                                         //狗的吃飯法方法System.out.println("狗吃肉");}
    public void lookHome(){                              //狗的看家方法
    System.out.println("看家");}
    

    }

抽象類 之 老師

  • 具體事物:基礎班老師,就業班老師
    • 共性:姓名,年齡,講課。
    • 具體事物:基礎班學生,就業班學生
    • 共性:姓名,年齡,學習

public class Text_Teacher {

public static void main(String[] args) {BaseTeacher bt = new BaseTeacher("黃家駒",32);bt.teach();
}
}
abstract class Teacher {private String name;
private int age;public Teacher(){}  //空參構造public Teacher(String name,int age){  //有參構造this.name = name;this.age = age;
}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 abstract void teach();//由于不同類型的老師講課的方式不同,所以這里的teach方法定義成abstract類型。由于這里的teach方法為抽象類型,所以這里的Teach類也得定義成abstract類。}class BaseTeacher extends Teacher{
public BaseTeacher(){}public BaseTeacher(String name,int age){super(name,age);
}public void teach(){System.out .println("我的姓名是:" + this.getName() + "   我的年齡是:" + this.getAge() + "  講的內容是Java基礎。");
}
}

抽象類 之 經理與員工

  • 假如我們在開發一個系統時需要對程序員類進行設計,程序員包含3個屬性:姓名、工號以及工資。
    • 經理,除了含有程序員的屬性外,另為還有一個獎金屬性。
    • 請使用繼承的思想設計出程序員類和經理類。要求類中提供必要的方法進行屬性訪問。
public class Test_Employee {public static void main(String[] args) {Coder c =new Coder("德瑪西亞","007",8000);c.work();Manager m = new Manager("蒼老師","9527",3000,20000);m.work();}}abstract class Employee{//先定義成員變量private String name;  //姓名private String id;    //工號private double salary;//工資public Employee(){}   //空參構造public Employee(String name,String id,double salary){this.name = name;this.id = id;this.salary = salary;}public void setName(String name){  //設置姓名this.name = name;}public String getName(){           //獲取姓名return name;}public void setId (String id){     //設置idthis.id = id;}public String getId(){             //獲取idreturn id;}public void setSalary(double salary){//設置工資this.salary =salary; }public double getSalary(){           //獲取工資return salary;}public abstract void work();}//程序員class Coder extends Employee{public Coder(){}   //空參構造public Coder(String name,String id,double salary){super(name,id,salary);}public void work(){System.out.println("我的姓名是:"+ this.getName() + ",我的工號是"  + this.getId() + ",我的工資是:" + this.getSalary() + ",我的工作內容是敲代碼");}   }//項目經理class Manager extends Employee{private int bonus;    //獎金public Manager (){}   //空參構造public Manager(String name,String id,double salary,int bonus){super(name,id,salary);this.bonus=bonus;}public void work(){System.out.println("我的姓名是:"+ this.getName() + ",我的工號是"  + this.getId() + ",我的工資是:" + this.getSalary() +"我的獎金是:"+bonus+ ",我的工作內容是管理");}   }

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/380181.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/380181.shtml
英文地址,請注明出處:http://en.pswp.cn/news/380181.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

密碼學加密算法分類_密碼學中的國際數據加密算法(IDEA)

密碼學加密算法分類Introduction 介紹 International Data Encryption Algorithm (IDEA) is a type of cryptography as a block cipher algorithm designed by "Xuejia Lai" and "James L.Massey" of ETH-Zrich and was first published in the 1991 yea…

如何定位溢出點位置

程序&#xff1a; #include <stdio.h> void exploit() {system("/bin/sh"); } void func() {char str[20];read(0,str,50);printf("the str is:%s\n",str); } int main() {func();return 0; }關掉保護機制&#xff1a; gcc -no-pie -fno-stack-pro…

.net知識和學習方法系列(六)關于數值類型

過年總是忙&#xff0c;沒有更多的時間來寫博客&#xff0c;不過還是挺想念這塊地方的。 本次博客說一下數值類型吧&#xff01; 不管那種語言&#xff0c;都為數據類型一說&#xff0c;在C#中也是&#xff0c;不過C#的數據類型分了兩類&#xff0c;一是值類型&#xff0c;一是…

【競賽題解】2021年廣東工業大學第十五屆文遠知行杯程序設計競賽(同步賽)

B 找山坡 題意&#xff1a;在數組中找到兩相等元素相距最大的距離且這兩元素間的元素都不小于該兩端值 思路&#xff1a;采用單調棧 例如&#xff1a;a[] { 2 3 5 4 6 3 }&#xff0c;棧內存儲元素的坐標&#xff08;從1開始&#xff09;&#xff0c;便于計算距離 首先將a[…

[轉]JAVA AES 加密算法

本文轉自&#xff1a;http://blog.sina.com.cn/s/blog_7c8eb1590100svr0.html package com.siro.tools;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64E…

java中Scanner類中 next()與nextLine()的區別

問題&#xff1a;提示用戶輸入一個英文字符串或者要解密的字符串&#xff0c;然后通過掃描儀獲取用戶輸入的字符串&#xff0c;經過加密或者解密后&#xff0c;把字符串輸出。 import java.util.Scanner;public class Encryption {public static void main(String[] args) {Sca…

操作系統中的處理機調度調度_操作系統中的流程分類和調度

操作系統中的處理機調度調度處理 (Process) In the operating system, there are numerous task and application program run simultaneously. A program is stored in the hard disk or any other form of secondary storage. When the program is executed it must be loade…

NX機制及繞過策略-ret2libc

程序&#xff1a; 1.c #include <stdio.h> void exploit() {system("/bin/sh"); } void func() {char str[0x20];read(0,str,0x50); } int main() {func();return 0; }0x01 NX介紹 溢出攻擊的本質在于馮諾依曼計算機模型對數據和代碼沒有明確區分這一先天性缺…

網站SEO策略的制定

在對一個網站做SEO的時候&#xff0c;SEO技術水平類似的人&#xff0c;營銷效果可能天壤之別&#xff0c;這是因為網站SEO策略的制定的不同&#xff01;-----這個是最根本的。 SEO技術非常的簡單&#xff0c;因為SEO不是去尋找搜索引擎的漏洞&#xff0c;而是根據搜索引…

Python | 程序從列表中刪除范圍內的所有元素

Given a list and we have to remove elements in a range from the list in Python. 給定一個列表&#xff0c;我們必須從Python中的列表中刪除范圍內的元素。 刪除列表(開始索引&#xff0c;結束索引) (del list(start_index, end_index)) del() method is used to remove a…

面向對象 (接口 Interface)

1&#xff0c;面向對象(接口的概述及其特點) A:接口概述 從狹義的角度講就是指java中的interface從廣義的角度講對外提供規則的都是接口 B:接口特點 a:接口用關鍵字interface表示 interface 接口名 {}b:類實現接口用implements表示 class 類名 implements 接口名 {}c:接口…

android unbound prefix

少一個命名空間加上就行了&#xff1a;xmlns:android"http://schemas.android.com/apk/res/android" 轉載于:https://www.cnblogs.com/nizuimeiabc1/archive/2011/10/09/4254310.html

【競賽題解】第22次CCF計算機軟件能力認證 B

今天&#xff08;準確說是昨天&#xff0c;一下子就過12點了&#xff09;下午剛參加了CSP認證考試&#xff0c;大概是考了220&#xff08;前兩題AC&#xff0c;第三題太折磨了懶得看了&#xff0c;后面兩題各混了10分&#xff09;&#xff0c;唯一有點參與感的就是B題了&#x…

gbd調試64位程序關鍵

程序&#xff1a; 4.c&#xff1a; #include<stdio.h> void exploit() {system("/bin/sh"); } void main() {char buf[20];gets(buf); }編譯&#xff1a; gcc -no-pie -fno-stack-protector -m64 -o 4.exe 4.cNX保護&#xff0c;棧數據不可執行 使用命令&…

C#全局鼠標鍵盤Hook (備查)

using System; using System.Collections.Generic; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace DCIEngine.FrameWork.Snap { /// <summary> /// 這個類可以讓你得到一個在…

fcfs調度算法_FCFS:先來先服務調度算法

fcfs調度算法The FCFS, which stands for First Come First Serve Scheduling Algorithm, is a non-preemptive scheduling algorithm, which means that if a process once starts executing in the processor, then it cannot be preempted in between the processing. Thus,…

親和數

Problem Description 古希臘數學家畢達哥拉斯在自然數研究中發現&#xff0c;220的所有真約數(即不是自身的約數)之和為&#xff1a; 1245101120224455110&#xff1d;284。 1* 220220&#xff1b;2* 110220&#xff1b;4* 55220&#xff1b;5* 44220&#xff1b;10*20220;…

轉:JNI jstring與c++字符串類型轉換函數

jstring與c字符串類型轉換函數 jstring str2jstring(JNIEnv* env,const char* pat) {//定義java String類 strClassjclass strClass (env)->FindClass("Ljava/lang/String;");//獲取String(byte[],String)的構造器,用于將本地byte[]數組轉換為一個新Stringjmetho…

python字符串轉浮點數_如何在Python中檢查字符串是否為數字(浮點數)?

python字符串轉浮點數Using python it is very to interconvert the datatypes of a variable. A string can be easily converted to an integer or a float. However, asserting a string to be a float is a task by itself. Python provides an option to assert if a stri…

nhibernate學習之三級聯(Ternary Associations)篇

1) 學習目標通過進一步學習Nhibernate基礎知識&#xff0c;掌握用Nhiberate實現對級聯的支持&#xff0c;通過一個簡單的用戶角色權限系統來體驗nhibernate對級聯的強大支持。2&#xff09;開發環境和必要準備 開發環境為:windows 2003,Visual studio .Net 2005,Sql server 200…