Java面向對象(二)

source:http://blog.java1234.com/index.html?typeId=1

Java類的繼承

1,繼承定義以及基本使用

定義:子類能夠繼承父類的屬性和方法;

注意點:Java中只支持單繼承; 私有方法不能繼承;

2,方法重寫

所謂方法的重寫 我們可以在子類中根據實際業務把父類的方法重寫;

3,對象實例過程以及super關鍵字

對象實例化 先實例化調用父類構造方法,再調用子類實例化構造方法;

super關鍵主要是調用父類方法或者屬性;

/*** 動物類* @author user**/
public class Animal {private String name; // 姓名private int age;  // 年齡/*** 無參父類構造方法*/public Animal() {System.out.println("無參父類構造方法");}/*** 有參父類構造方法* @param name 姓名* @param age 年齡*/public Animal(String name,int age) {System.out.println("有參父類構造方法");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 void say(){System.out.println("我是一個動物,我叫:"+this.name+",我的年齡是:"+this.age);}
}/*** 定義一個Cat類,繼承自Animal* @author user**/
public class Cat extends Animal{private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Cat() {super();System.out.println("子類無參構造方法");}public Cat(String name, int age,String address) {super(name, age);this.address=address;System.out.println("子類有參構造方法");}/*** 重寫父類的say方法*/public void say(){super.say(); // 調用父類的say()方法System.out.println("我是一個貓,我叫:"+this.getName()+",我的年齡是:"+this.getAge()+",我來自:"+this.getAddress());}public static void main(String[] args) {Cat cat=new Cat("Mini",2,"火星");/*cat.setName("Mini");cat.setAge(2);*/cat.say();}
}

運行輸出:

有參父類構造方法

子類有參構造方法

我是一個動物,我叫:Mini,我的年齡是:2

我是一個貓,我叫:Mini,我的年齡是:2,我來自:火星

final關鍵字

final是終結 完結的意思;

使用final聲明的類不能被繼承;

使用final聲明的方法不能被子類覆蓋;

使用final聲明的變量不能被修改,即為常量;

抽象類

定義:在java中,含有抽象方法的類稱為抽象類,同樣不能生成對象;

注意點:

1,包含一個抽象方法的類是抽象類;

2,抽象類和抽象方法都要用abstract關鍵字修飾;

3,抽象方法只需要聲明而不需要實現;

4,抽象類必須被子類(假如不是抽象類)必須重寫抽象中的全部抽象方法;

5,抽象類不能被實例化;

/*** 定義一個抽象類People* @author user**/
public abstract class People {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void say(){System.out.println("我的姓名是:"+this.getName());}/*** 定義一個抽象方法 職業 讓子類去具體實現*/public abstract void profession();}public class Student extends People{@Overridepublic void profession() {System.out.println("職業是:學生");}}public class Teacher extends People{@Overridepublic void profession() {System.out.println("職業是:老師");}
}public class Test {public static void main(String[] args) {Student student=new Student();student.profession();Teacher teacher=new Teacher();teacher.profession();}
}

運行輸出:

職業是:學生

職業是:老師

接口

接口定義:一種特殊的“抽象類”,沒有普通方法,由全局常量和公共的抽象方法所組成;

1,接口的定義

接口定義用關鍵字 interface,注意點:由于接口里的方法都是抽象的,所以abstract可以省略,實際開發一般都是省略的,開發者的習慣;

2,實現接口 可以實現一個或者多個接口,實現接口我們用implements關鍵字;

3,繼承類和實現接口 先繼承,后實現接口;

4,接口的繼承 ?接口可以多繼承;

對象的多態性

多態性表現:

1,方法的重載和重寫;

2,可以用父類的引用指向子類的具體實現,而且可以隨時更換為其他子類的具體實現;

public class Animal {public void say(){System.out.println("我是一個動物");}
}
public class Cat extends Animal{public void say(){System.out.println("我是一個貓");}
}
public class Dog extends Animal{public void say(){System.out.println("我是一個狗");}
}
public class Test {public static void main(String[] args) {Dog dog=new Dog();dog.say();Cat cat=new Cat();cat.say();}
}

運行輸出:

我是一個狗

我是一個貓

//多態測試,父類引用指向子類具體實現
public class Test {public static void main(String[] args) {// 父類引用指向Dog子類的具體實現Animal animal=new Dog();animal.say();// 更換實現animal=new Cat();animal.say();}
}

運行輸出:

我是一個狗

我是一個貓

?

對象的轉型:

向上轉型:子類對象->父類對象 安全

向下轉型:父類對象->子類對象 不安全

Object類

Object類是所有類的父類;

Object類的常用方法

1,public String toString() 返回該對象的字符串表示;

2,public boolean equals(Object obj) 指示其他某個對象是否與此對象“相等”;

instanceof關鍵字

作用:判斷一個對象是否屬于一個類

格式:對象 instanceof 類 返回布爾類型

public class Animal {public void say(){System.out.println("我是一個動物");}
}
public class Dog extends Animal{public void say(){System.out.println("我是一只狗");}
}
public class Cat extends Animal{public void say(){System.out.println("我是一只貓");}
}
public class Test {public static void main(String[] args) {Animal dog=new Dog();System.out.println("dog對象是否屬于Animal類:"+(dog instanceof Animal));System.out.println("dog對象是否屬于Dog類:"+(dog instanceof Dog));System.out.println("dog對象是否屬于Cat類:"+(dog instanceof Cat));}
}

運行輸出:

dog對象是否屬于Animal類:true

dog對象是否屬于Dog類:true

dog對象是否屬于Cat類:false

匿名內部類

類的內部再定義類;

匿名內部類 這里指的是實例化內部對象 就是沒有名字的內部類;

?

作用:假如某個類只使用一次,則可以使用匿名內部類;

包裝類

每個基本類型都有一個對應的類;就是所謂的包裝類;

?

QQ鎴浘20161020152251.jpg

1,裝箱和拆箱

基本類型和類類型可以相互轉換;

基本類型到類類型的轉換叫做裝箱;

類類型到基本類型的轉換叫做拆箱;

public static void main(String[] args) {int a=1;Integer i=new Integer(a); // 裝箱int b=i.intValue(); // 拆箱System.out.println("a="+a);System.out.println("i="+i);System.out.println("b="+b);
}

運行輸出:

a=1

i=1

b=1

2,自動裝箱和拆箱

在類類型和基本類型的轉換中,是自動轉換的 無需強制類型轉換;

public static void main(String[] args) {Integer i=1; // 自動裝箱的過程 自動把基本類型轉換成類類型int i2=i; // 自動拆箱的過程 自動把類類型轉成基本類型System.out.println("i="+i);System.out.println("i2="+i2);
}

運行輸出:

i=1

i2=1

3,包裝類的作用

因為包裝類是類類型 所有jdk里提供了很多有用的方法給我們用;

比如從用戶界面來兩個字符串數據a,b 然后我們程序里要進行相加運算。這時候包裝類就派上用場了,我們可以用包裝類的方法類進行類型轉換。

public static void main(String[] args) {String a="3";String b="5";int m=Integer.valueOf(a); // 調用Integer類的valuesOf方法 把字符串類型轉換成int類型int n=Integer.valueOf(b);System.out.println("a+b="+(m+n));
}

運行輸出:

a+b=8

單例模式

在Java應用中,單例對象能保證在一個JVM中,該對象只有一個實例存在;

?

有兩種實現,一種是餓漢式,一種是懶漢式;

public class Singleton {/*** 構造方法私有*/private Singleton(){}/*** 餓漢式單例實現*/private static final Singleton single=new Singleton();/*** 獲取實例*/public static Singleton getInstance(){return single;}
}public class Singleton2 {/*** 構造方法私有*/private Singleton2(){}/*** 懶漢式單例實現 在第一次調用的時候實例化*/private static Singleton2 single;/*** 獲取實例*/public synchronized static Singleton2 getInstance(){if(single==null){System.out.println("第一次調用的實例化");single=new Singleton2();}return single;}
}public class Test {public static void main(String[] args) {Singleton singleton1=Singleton.getInstance();Singleton singleton2=Singleton.getInstance();System.out.println("餓漢式:"+(singleton1==singleton2));Singleton2 singleton3=Singleton2.getInstance();Singleton2 singleton4=Singleton2.getInstance();System.out.println("懶漢式:"+(singleton3==singleton4));}
}

運行輸出:

餓漢式:true

第一次調用的實例化

懶漢式:true

表示圖形

//實現一個類,用來表示圖形,定義方法,可以分別計算出矩形和圓形的面積和周長
/*** 圖形接口* @author user**/
public interface Graphical {/*** 求面積方法* @return*/public float mianji();/*** 求周長方法* @return*/public float zhouChang();
}/*** 矩形類* @author user**/
public class Rectangle implements Graphical{private float c; // 長度private float k; // 寬度public Rectangle(float c, float k) {super();this.c = c;this.k = k;}@Overridepublic float mianji() {return c*k;}@Overridepublic float zhouChang() {return 2*(c+k);}}/*** 圓形* @author user**/
public class Circular implements Graphical{private float r; // 半徑public Circular(float r) {super();this.r = r;}@Overridepublic float mianji() {return (float) (Math.PI*r*r);}@Overridepublic float zhouChang() {return (float) (2*Math.PI*r);}}public class Test {public static void main(String[] args) {Rectangle r=new Rectangle(2,3.5f);System.out.println("矩形的面積:"+r.mianji());System.out.println("矩形的周長:"+r.zhouChang());Circular c=new Circular(1.5f);System.out.println("圓形的面積:"+c.mianji());System.out.println("圓形的周長:"+c.zhouChang());}
}

運行輸出:

矩形的面積:7.0

矩形的周長:11.0

圓形的面積:7.0685835

圓形的周長:9.424778

public?void?f1(){
????????System.out.println("汪汪...");
????}

轉載于:https://www.cnblogs.com/CareyZhao/p/10329639.html

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

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

相關文章

游戲通訊方式

農藥自從上線以來,依靠著強大的產品力以及騰訊的運營能力,在游戲市場上表現可謂是風生水起,根據第三方的調研數據顯示,《王者榮耀》滲透率達到22.3%,用戶規模達到2.01億人,每日的日活躍用戶(DAU…

小小c#算法題 - 3 - 字符串語句反轉

題目:反轉語句。 如I love Beijing! 反轉后輸出 !Beijing love I 特點是指反轉單詞的順序,其他字符(這個可以自己指定)不反轉。且不能用內置函數,如Split和Substring。 分析:我們需要保證一個單詞的字…

unity5.4.3p2里面的AssetBundle打包流程

unity5.4.3p2里面的AssetBundle打包流程,相比之前unity4.x的打包簡單了許多,Unity4.X中打包的時候需要自己去管理依賴關系,各種BuildPipeline.PushAssetDependencies()和BuildPipeline.PopAssetDependencies(),一不小心手一抖&…

靜態查找表的實現

#ifndef SSTABLE_H #define SSTABLE_H#include <iostream> using namespace std;/************************************************************* SSTable&#xff1a;stastic search table 靜態查找表的模板類實現 順序存儲結構 ************************************…

(轉)javascript匿名函數

文章來源: http://hi.baidu.com/koen_li/blog/item/4b14e4fc0c9b140c08244d8c.html 匿名函數的寫法 顧名思義&#xff0c;就是沒有名字的函數&#xff08;⊙﹏⊙b汗&#xff09;。匿名函數通常用于javascript作用域的控制&#xff0c;可以有效的避免對全局變量的污染。常見的匿…

BZOJ3307 雨天的尾巴

題目鏈接&#xff1a;戳我 樹上鏈修改->差分 每一個節點都開一個權值線段樹&#xff0c;最后從下往上合并qwq 代碼如下&#xff1a; #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #define MA…

主成分分析(PCA)原理詳解 2016/12/17 · IT技術 · 主成分分析, 數學 分享到: 21 原文出處: 中科春哥 一、PCA簡介 1. 相關背景 主成分分析(Principa

主成分分析&#xff08;PCA&#xff09;原理詳解 2016/12/17 IT技術 主成分分析, 數學 分享到&#xff1a;21原文出處&#xff1a; 中科春哥 一、PCA簡介 1. 相關背景 主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;&#xff0c; 是一種統…

1 Hadoop簡介

1.1 什么是Hadoop 分布式計算平臺 優點&#xff1a; 高可靠性 高擴展性 高效性 在各節點之間動態地移動數據&#xff0c;保證各個節點的動態平衡 高容錯性 數據多副本&#xff1b;重新啟動失敗任務 Hadoop應用&#xff1a; Yahoo 廣告系統Web搜索研究 Facebook 數據分…

Google Xpath Helper

Google Xpath Helper 下載方法&#xff1a; 1. 訪問http://chrome-extension-downloader.com/ 2. 把https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl拷貝到文本框里面&#xff0c;然后點擊“Download Extention”按鈕。 使用方法&am…

【Tensorflow】 Object_detection之訓練PASCAL VOC數據集

參考&#xff1a;Running Locally 1、檢查數據、config文件是否配置好 可參考之前博客&#xff1a; Tensorflow Object_detection之配置Training Pipeline Tensorflow Object_detection之準備數據生成TFRecord 2、訓練模型 PIPELINE_CONFIG_PATH/data/zxx/models/research/date…

2 Hadoop的安裝與配置

需要JDK、SSH 對于偽分布式&#xff0c;Hadoop會采取與集群相同的處理方式&#xff1a;按次序啟動文件conf/slaves中記載的主機上的進程&#xff0c;只不過在偽分布式中Slave為localhost&#xff08;自身&#xff09;。 Hadoop從三個角度將主機劃分為兩種角色&#xff1a; 最…

局域網訪問控制

訪問局域網內其他機器可用如下方式&#xff1a; \\PC-name\d$\dir 或者 \\192.168.xxx.xxx\d$\dir d代表d盤 但前提是對方機器已經把本機用戶設置為管理員賬戶轉載于:https://www.cnblogs.com/jimmy-c/p/4116804.html

Unity3d 插值同步

文中大體的思路&#xff1a; A玩家 移動時&#xff0c;本機自行移動&#xff0c;并發送移動指令給服務端&#xff0c;假設移動是成功的&#xff0c;服務端同步其他客戶端 B玩家&#xff0c;B玩家 中用一個隊列 Queue 來裝服務端來的移動指令&#xff0c;然后客戶端在updata中做…

laravel數據庫相關操作說明

輸出原生sql: DB::table(users)->where([[name,,張三]])->toSql(); //輸出sql為&#xff1a;select * from users where name?; DB::table(users)->where([[name,,張三]])->getQuery(); //輸出sql為&#xff1a;select * from users where name張三; 運行原生sql查…

1 數據挖掘基礎

1.1 什么是數據挖掘 從大量數據中挖掘出隱含的、未知的、對決策有潛在價值的關系、模式和趨勢&#xff0c;并用這些知識和規則建立用于決策支持的模型&#xff0c;提供預測性決策支持的方法、工具和過程&#xff0c;這就是數據挖掘。 是統計學、數據庫技術、人工智能技術的結…

R文件報錯的原因

一般R文件報錯&#xff0c;無非是資源文件錯誤&#xff0c;圖片命名錯誤&#xff0c;但是編譯都會報錯&#xff0c;可以很快解決。但是前幾天&#xff0c;引入一個第三方aar包后&#xff0c;項目編譯正確&#xff0c;但是就是R文件報錯&#xff0c;找不到R文件&#xff0c;整個…

1.0 算法本機調試方法

算法的本機調試方法&#xff1a; 從本地文件中讀取測試數據&#xff0c;進行算法調試。 例&#xff1a;讀取兩個數&#xff0c;輸出和。 1 2 11 22 111 222 輸出&#xff1a; 3 33 333 #include <fstream> //讀取本地文件需要此頭文件。調試完成后&#xff0c;提…

[轉]Excel數據轉化為sql腳本

在實際項目開發中&#xff0c;有時會遇到客戶讓我們把大量Excel數據導入數據庫的情況。這時我們就可以通過將Excel數據轉化為sql腳本來批量導入數據庫。 1 在數據前插入一列單元格&#xff0c;用來拼寫sql語句。 具體寫法&#xff1a;"insert into t_student (id,name,age…

void Update ( ) 更新 void FixedUpdate ( )

void Update ( ) 更新 void FixedUpdate ( ) 固定更新 相同點&#xff1a;當MonoBehaviour啟用時&#xff0c;其在每一幀被調用&#xff0c;都是用來更新的。 異同點&#xff1a;第一點不同&#xff1a; Update()每一幀的時間不固定&#xff0c;即第一幀與第二幀的時間間隔t…

海量數據庫的查詢優化及分頁算法方案(一)

隨著“金盾工程”建設的逐步深入和公安信息化的高速發展&#xff0c;公安計算機應用系統被廣泛應用在各警種、各部門。與此同時&#xff0c;應用系統體系的核心、系統數據的存放地――數據庫也隨著實際應用而急劇膨脹&#xff0c;一些大規模的系統&#xff0c;如人口系統的數據…