『壹』 java面向對象程序設計的介紹
《Java面向對象程序設計》通過豐富、實用的精選實例系統地介紹了使用Java語言進行面向對象程序設計的方法和技術,注重提高讀者運用Java語言和面向對象技術解決實際問題的能力。全書共12章,內容包括面向對象程序設計概述,Java語言概述,Java語言基礎,類、對象和介面,包和Java基礎類,Java異常處理,Java圖形用戶界面設計,Applet及其應用,I/O系統,多線程編程,多媒體編程和網路編程等。《Java面向對象程序設計》編排合理,重點突出,語言流暢,示例豐富。內容上注重科學性、實用性、針對性,突出當今社會對人才應用能力的培養要求;針對所闡述的理論列舉了比較典型的實例,便於讀者學習、掌握;全部代碼都在Java SDK 1.4.2運行環境下調試通過;每章都配有小結和習題,方便讀者復習鞏固本章知識。
『貳』 JAVA面向對象編程
這是什麼上面的題目?感覺就像是為了這么干而這么干,一點都不合理,下面是代碼,不懂可以提問
控制台運行結果
『叄』 java面向對象程序設計
/*
對象的多態性:動物x=new貓();
函數的多態性:函數重載、重寫
1、多態的體現
父類的引用指向了自己的子類對象
父類的引用也可以接收自己的對象
2、多態的前提
必須是類與類之間只有關系,要麼繼承或實現
通常還有一個前提,存在覆蓋
3、多態的好處
多態的出現大大的提高了程序的擴展性
4、多態的弊端
只能使用父類的引用訪問父類的成員
5、多態的應用
6、注意事項
*/
/*
需求:
貓,狗。
*/
abstractclassAnimal
{
abstractvoideat();
}
classCatextendsAnimal
{
publicvoideat()
{
System.out.println("吃魚");
}
publicvoidcatchMouse()
{
System.out.println("抓老鼠");
}
}
classDogextendsAnimal
{
publicvoideat()
{
System.out.println("吃骨頭");
}
publicvoidkanJia()
{
System.out.println("看家");
}
}
classDuoTaiDemo
{
publicstaticvoidmain(String[]args)
{
function(newCat());
function(newDog());
Animala=newCat();//向上轉型
a.eat();
Catc=(Cat)a;//向下轉型
c.catchMouse();
}
publicstaticvoidfunction(Animala)
{
a.eat();
//用於子類型有限
//或判斷所屬類型進而使用其特有方法
if(ainstanceofCat)
{
Catc=(Cat)a;
c.catchMouse();
}
elseif(ainstanceofDog)
{
Dogc=(Dog)a;
c.kanJia();
}
}
}
『肆』 什麼是java面向對象編程
面向對象編程(oop)旨在將現實世界中的概念模擬到計算機中,它將現實世界中的所以事物視作對象。對象是存在的具體實體,具有明確定義的狀態和行為。
『伍』 java面向對象編程問題
關於多態
類之間的繼承關系使子類具有父類的所有變數和方法,=> 父類所具有的方法也可以在它所有子類中使用,發給父類的消息也可以發送給子類 => 子類的對象也是父類的對象=>子類的對象既可以做本身的類型,也可以做父類的類型。 呵呵,上述推導公式好像繞口令似的。我們舉個例子理解上述概念。舉例:
public class 動物 //動物是父類
public class 貓 extends 動物 //貓是子類
動物的所有特性在貓中可以使用,發給動物的信息貓也能收到=>貓的對象new 貓();既可以作為本身的類型 貓 a=new 貓(); 也可以作為父類的類型 動物 b = new 貓();這樣說理解了嗎?如有疑問請訪問我們的技術論壇。
如果大家明白了的話,我們就可以從上述公式推導出結論,所有的子類都可以作為父類的類型(同一種類型)來對待。像剛才那個動物有很多子類啊,可以有很多對象。動物 a=new 貓();動物 b=new 狗(); 動物 c=new 豬();。這樣的將子類型的對象引用轉換成父類型的對象引用,叫做上溯造型(upcasting)。
我們再來引伸一下,我們在數組那節課里講了,數組存放的元素是相同類型的數據,但是上溯造型使得java允許創建不同類型對象的數組。例如:
Employee[] staff = new Employee[3];
staff[0] = new Manager();
staff[1] = new Secretary();
staff[2] = new Employee();
夷?這是怎麼回事啊,數組裡面不是相同類型嗎?對啊,因為Sectetary和Manager是Employee的子類,所以也可以通過上溯造型變成Employee啊。以前我們還學到了所有對象都是從java.lang.Object 繼承下來的。如果數組要是 Object型的話 Object[] obj=new Object[];那就是裡面放什麼對象都行了。因為什麼對象都可以是Object型的。
實踐:
// java中的多態
class Shape {
void draw() {}
void erase() {}
}
//圓形
class Circle extends Shape {
void draw() {
System.out.println("Circle.draw()");
}
void erase() {
System.out.println("Circle.erase()");
}
}
//正方形
class Square extends Shape {
void draw() {
System.out.println("Square.draw()");
}
void erase() {
System.out.println("Square.erase()");
}
}
//三角形
class Triangle extends Shape {
void draw() {
System.out.println("Triangle.draw()");
}
void erase() {
System.out.println("Triangle.erase()");
}
}
public class Shapes {
public static Shape randShape() {
switch((int)(Math.random() * 3)) {
default:
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
public static void main(String[] args) {
Shape[] s = new Shape[9];
// 向數組里添加類型
for(int i = 0; i < s.length; i++)
s[i] = randShape();
// 用多態的方法調用
for(int i = 0; i < s.length; i++)
s[i].draw();
}
}
『陸』 java面向對象編程求幫忙
一共三個類:ScoreArray.java、StudentScoreArray.java和Test1.java,具體為:
public class ScoreArray {
private int[] scores;
private int scoreCount;
public int[] getScores() {
return scores;
}
public int getScoreCount() {
return scoreCount;
}
//構造函數
public ScoreArray(int[] scores) {
this.scores = scores;
for (int score : scores) {
if (score >= 0 && score <= 100) {
this.scoreCount++;
}
}
}
//求最大值
public int getMax() {
int[] scores = this.scores;
int temp;
for (int i = 0; i < scores.length; i++) {
for (int j = 0; j < scores.length - 1 - i; j++) {
if (scores[j] > scores[j + 1]) {
temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
return scores[scores.length - 1];
}
//求最小值
public int getMin() {
int[] scores = this.scores;
int temp;
for (int i = 0; i < scores.length; i++) {
for (int j = 0; j < scores.length - 1 - i; j++) {
if (scores[j] > scores[j + 1]) {
temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
return scores[0];
}
//求均值
public double getAvg() {
int sum = 0;
for (int score : this.scores) {
sum += score;
}
return new BigDecimal(sum).divide(
new BigDecimal(this.scores.length),
2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
//排序
public void sort() {
int temp;
for (int i = 0; i < this.scores.length; i++) {
for (int j = 0; j < this.scores.length - 1 - i; j++) {
if (this.scores[j] > this.scores[j + 1]) {
temp = this.scores[j];
this.scores[j] = this.scores[j + 1];
this.scores[j + 1] = temp;
}
}
}
}
//靜態說明類
public static void explain() {
System.out.println("本類[ScoreArray]實現了數組的:求最值[getMax()]、求均值[getAvg()]和排序[sort()]方法");
}
}
public class StudentScoreArray extends ScoreArray {
public StudentScoreArray(int[] scores) {
super(scores);
}
//統計
public void statistic() {
super.sort();
Map<Integer, Integer> map = new LinkedHashMap<>();
for (int i : super.getScores()) {
if (map.containsKey(i)) {
map.put(i, map.get(i) + 1);
} else {
map.put(i, 1);
}
}
map.forEach((k, v) -> System.out.println("分數為[" + k + "]的人數為:[" + v + "]"));
}
//靜態說明類
public static void explain() {
System.out.println("本類[StudentScoreArray]實現了數組的:求最值[getMax()]、求均值[getAvg()]、排序[sort()]和分布統計[statistic()]方法");
}
}
public class Test1 {
public static void main(String[] args) {
int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};
ScoreArray scoreArray = new ScoreArray(scores);
ScoreArray.explain();
System.out.print("數組內容:[");
for (int i : scoreArray.getScores()) {
System.out.print(i + " ");
}
System.out.println("]");
System.out.println("有效值個數:" + scoreArray.getScoreCount());
System.out.println("最大值:" + scoreArray.getMax());
System.out.println("最小值:" + scoreArray.getMin());
System.out.println("平均值:" + scoreArray.getAvg());
scoreArray.sort();
System.out.print("排序後數組內容:[");
for (int i : scoreArray.getScores()) {
System.out.print(i + " ");
}
System.out.println("]");
System.out.println("");
System.out.println("========華麗的分割線========");
System.out.println("");
StudentScoreArray studentScoreArray = new StudentScoreArray(scores);
StudentScoreArray.explain();
System.out.print("數組內容:[");
for (int i : studentScoreArray.getScores()) {
System.out.print(i + ",");
}
System.out.println("]");
System.out.println("有效值個數:" + studentScoreArray.getScoreCount());
System.out.println("最大值:" + studentScoreArray.getMax());
System.out.println("最小值:" + studentScoreArray.getMin());
System.out.println("平均值:" + studentScoreArray.getAvg());
studentScoreArray.sort();
System.out.print("排序後數組內容:[");
for (int i : studentScoreArray.getScores()) {
System.out.print(i + " ");
}
System.out.println("]");
System.out.println("分數分布統計:");
studentScoreArray.statistic();
}
}
其中對StudentScoreArray類我要特別說明一下:
統計分布情況時,使用了Map,map是一種key-value的數據結構,其有個特點被我所利用:一個map中只能同時存在一個key,所以我以分數為key,以數量為value,遍歷分數數組時,如果是第一次遇到這個key(分數),則將其value(數量)置為1;如果已經不是第一次遇見了,則將其value(數量)置為value + 1(數量 + 1)。另外需要遍歷這個map實現統計結果的列印,我這里使用了java8以後才支持的Lambda表達式,所以你要運行這個程序必須要使用jdk1.8以上的版本。如果你覺得這樣不妥,可以網上再搜一下map的遍歷方式。
運行結果:
測試用例都使用的數組:int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};
『柒』 用java進行面向對象編程,面向對象是什麼意思,請通俗一點解釋
通俗一點說就是你可以設定一個類,比如汽車類Car。汽車有很多屬性,比如顏色color,品牌brand。
然後呢,你new一個對象出來。Car myCar=new Car()
類具體到某一個特定的個體的時候,就是一個對象了。
我們可以給myCar設定顏色和品牌,還可以讓它干好多別的事情。
再說人類。人類是一個很大的群體,但是特定到某一個人,比如你,比如我,比如小明,張三,李四,每個特定的人,都是一個對象,他屬於「人」這個類
你先明白java中類的概念。類具體到某個實例,就是對象了
『捌』 Java面向對象編程有哪些優點
面向對象的優點是:不造重復的輪子,也就是說不幹重復的活。
java中把具有相同共性的一類事物抽象為一個類,而對象是這個類的其中一個實體。
例如:人是一個類(有共同的屬性,有頭發、眼睛、鼻子.....),張三、李四、王五是三個實體對象,而每個對象的屬性又是不同的,例如張三是黑頭發,李四是黃頭發、王五是紅頭發。
這樣復用性比較好。
『玖』 Java面向對象程序設計 這句話中的對象指的是什麼
對象是類的實例的意思
面向對象
面向對象是一種新興的程序設計方法,或者說它是一種新的程序設計范型,其基本思想是使用對象,類,繼承,封裝,消息等基本概念來進行程序設計。
它是從現實世界中客觀存在的事物(即對象)出發來構造軟體系統,並在系統構造中盡可能運用人類的自然思維方式,強調直接以問題域(現實世界)中的事物為中心來思考問題,認識問題,並根據這些事物的本質特點,把它們抽象地表示為系統中的對象,作為系統的基本構成單位(而不是用一些與現實世界中的事物相關比較遠,並且沒有對應關系的其它概念來構造系統)。這可以使系統直接地映射問題域,保持問題域中事物及其相互關系的本來面貌。
它可以有不同層次的理解:
從世界觀的角度可以認為:面向對象的基本哲學是認為世界是由各種各樣具有自己的運動規律和內部狀態的對象所組成的;不同對象之間的相互作用和通訊構成了完整的現實世界。因此,人們應當按照現實世界這個本來面貌來理解世界,直接通過對象及其相互關系來反映世界。這樣建立起來的系統才能符合現實世界的本來面目。
從方法學的角度可以認為:面向對象的方法是面向對象的世界觀在開發方法中的直接運用。它強調系統的結構應該直接與現實世界的結構相對應,應該圍繞現實世界中的對象來構造系統,而不是圍繞功能來構造系統。
從程序設計的角度來看,面向對象的程序設計語言必須有描述對象及其相互之間關系的語言成分。這些程序設計語言可以歸納為以下幾類:系統中一切皆為對象;對象是屬性及其操作的封裝體;對象可按其性質劃分為類,對象成為類的實例;實例關系和繼承關系是對象之間的靜態關系;消息傳遞是對象之間動態聯系的唯一形式,也是計算的唯一形式;方法是消息的序列。