1. 程式人生 > >java 類和物件的理解

java 類和物件的理解

物件和類的定義



過載

public class Overloading {
 
	public int test(){
		System.out.println("test1");
		return 1;
	}
 
	public void test(int a){
		System.out.println("test2");
	}	
 
	//以下兩個引數型別順序不同
	public String test(int a,String s){
		System.out.println("test3");
		return "returntest3";
	}	
 
	public String test(String s,int a){
		System.out.println("test4");
		return "returntest4";
	}	
 
	public static void main(String[] args){
		Overloading o = new Overloading();
		System.out.println(o.test());
		o.test(1);
		System.out.println(o.test(1,"test3"));
		System.out.println(o.test("test4",1));
	}
}

過載 方法相同呼叫的引數型別、個數,順序,修飾符不同列印的結果不同 列印的結果是

test1
1
test2
test3
returntest3
test4
returntest4

多型

public class test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		a am = new a();
		a an = new a();
		c cm = new c();
		d dm =  new d();
		
//		am.cc(new a(){
//			
//			@Override
//			public void cc(b bm) {
//				// TODO Auto-generated method stub
//				System.out.println("sdjghi");
//				
//			}	
//		});
		
//		am.cc(new b(){
//			
//			public void cc(b bm){
//					
//			}
//
//			@Override
//			public void ee() {
//				// TODO Auto-generated method stub
//				System.out.println("sdjghi");
//			}
//			
//		});
		
		cm.run(new b(){

			@Override
			public void cc(b bm) {
				// TODO Auto-generated method stub
				System.out.println("sdjghi");
			}

			@Override
			public void ee() {
				// TODO Auto-generated method stub
				System.out.println("sdjghi");
			}
			
			
		});
	
		cm.cc(cm);
		

	}

	private static b bm;
	public interface b{
		
		void cc(b bm);
		
		void ee();
	}
	
	
	
	static class a implements b {
		
//			a am = new a();
		@Override
		public void cc(b bm) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void ee() {
			// TODO Auto-generated method stub
			
		}	
	}
	
	static class c implements b{
		
		
		public void run( b bv ){
			
			bm =bv;
			bm.ee();
			bm.cc(bv);
		}
		public void play(){
			
			System.out.println("鍛鍊");
			
		}

		@Override
		public void cc(b bm) {
			// TODO Auto-generated method stub
			
			((c) bm).play();
		}

		@Override
		public void ee() {
			// TODO Auto-generated method stub
			
		}
	}
	
	static class d {
		
	}
}

列印的結果是 

sdjghi
sdjghi
鍛鍊

public class PolTest {

	public static class Wine {

		public void name1() {

			System.out.println("茅臺");
		}

		public void name2(String name) {

			System.out.println("五糧液");
		}

		public void name2(String name, int a) {

			System.out.println("五糧液");
		}
	}

	public static class jnc extends Wine {

		public void name1() {

			System.out.println("特醇劍蘭春");
		}

		public void name2(String name) {

			System.out.println("尊享劍蘭春");
		}

		public void name2(String name, int a) {

			System.out.println("至尊劍蘭春");
		}
		public void drink() {
			
			System.out.println("劍蘭春好喝");
		}
		
	}
	public static class dq extends Wine {
		
		public void name1() {
			
			System.out.println("da");
		}
		
		public void name2(String name) {
			
			System.out.println("qu");
		}
		
		public void name2(String name, int a) {
			
			System.out.println("sdf");
		}
		public void drink() {
			
			System.out.println("hfg");
		}
		
	}
	
	
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Wine wine = new dq();
		wine.name2("有");
//		Wine wine = new Wine();
//		jnc jn= new jnc();
//		wine.name1();
//		jn.name1();
		
	}

}

列印結果是:qu

Java實現多型有三個必要條件:繼承、重寫、向上轉型

所以基於繼承實現的多型可以總結如下:對於引用子類的父類型別(繼承),在處理該引用時(重寫,向上轉型),它適用於繼承該父類的所有子類,子類物件的不同,對方法的實現也就不同,執行相同動作產生的行為也就不同

常量

public class A {

	public static void main(String[] args) {
		
		final int m =1;
		A a = new A();
		A b = new A();
		String c ="abc";
		String d ="abc";
		final int f =1;
		
		System.out.println(a);
		System.out.println("---------"+b);
		System.out.println(a==b);
		System.out.println(a.equals(b));
		System.out.println(c==d);
		System.out.println(c.equals(d));
		System.out.println(m==f);
		
		
		System.out.println(m);
	}
}

列印的結果是

[email protected]
[email protected]
false
false
true
true
true
1

匿名類

類是有class關鍵字來修飾有名稱並有“{}”,例如class A{} ,宣告物件 A a = new A(); 匿名類沒有名稱所以稱為匿名類如:

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	findViewById(R.id.Button03).setOnClickListener(new OnClickListener(){
		@Override
		public void onClick(View v) {
			Intent intent = new Intent(mainActivity.this, fristActivity.class);
			intent.putExtra("data", "mainActivity");
			startActivity(intent);			
		}		
	});
}

new OnClickListener(){
		@Override
		public void onClick(View v) {
					
		}		
	});  這個就是匿名類

原本應該是這樣寫的(不是匿名類的寫法)

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	findViewById(R.id.Button03).setOnClickListener(new A());
}


<pre name="code" class="html">class A implements View.OnClickListener{
@Override
		public void onClick(View v) {
		
	Intent intent = new Intent(mainActivity.this, fristActivity.class);
			intent.putExtra("data", "mainActivity");
			startActivity(intent);	
			
		}

}


相關推薦

java 物件理解

物件和類的定義 過載 public class Overloading { public int test(){ System.out.println("test1"); return 1; } public void test(in

[Java]Java物件記憶體分配詳解

描述 程式碼說明: 一.當Person p1 = new Person();第一次被呼叫時需要做兩件事: 1.先判斷類載入器是否載入過Person類,如果沒有則載入到Person型別到方法區 2.在堆中開闢記憶體空間,在棧中物件名引用(指向)堆的相應記憶體空間 二. p1.name = '皓皓': 將堆中n

Java物件(四)

抽象類和抽象方法 1. 抽象類 在 Java 面向物件當中,所有的物件都是用過類進行描繪的,但是並不是所有的類都是用來描繪物件的,如果一個類中沒有包含足夠的資訊來描繪一個具體的物件,我們把這種類定義為抽象類。 抽象類的特徵: 抽象類不能用來例項化物件,所以抽象類必須被

java物件及python中的類似實現

一:java類和物件 首先,我們簡單說一下類和物件的理解:所有男的這相當於一個“類”,而某個具體的人就是一個“物件” 類:當做物件的模板 物件:根據類建立,在java中,使用關鍵詞new建立新物件 java中定義一個類: public class Dog { String

Java物件

類的定義和例項化 1.類的定義 類在 Java 中屬於引用型別,Java 使用關鍵字 class 來宣告類。 public class People{ public String name; public int age; public Peo

Java物件 詳解(一)

一、面向物件簡述 面向物件是一種現在最為流行的程式設計方法,幾乎現在的所有應用都以面向物件為主了,最早的面向物件的概念實際上是由IBM提出的,在70年代的Smaltalk語言之中進行了應用,後來根據面向物件的設計思路,才形成C++,而由C++產生了Java這門

Java 物件,如何定義Java中的,如何使用Java中的物件,變數

1.物件的概念 :萬物皆物件,客觀存在的事物皆為物件 2.什麼是面向物件:人關注一個物件,實際上是關注該物件的事務資訊 3.類:類是模子,確定物件將會擁有的特徵(屬性)和行為(方法)        

Java物件知識點

Java類和物件 1.面向程式設計:我們再解決問題中,注重的是解決問題的每一個步驟和過程。以計算機的角度去看待問題2.面向物件:注重的是在為題中,設計的到哪些物件,以及物件之間有哪些關係 以自己的角度去看待問題為什麼使用面向物件?/面向物件的好處:一點點東西的變化不會影響到整

java物件寫一個簡單的回合制對戰遊戲

一、什麼是物件,什麼是類類比現實生活,任何一個具體的事物都可以稱為物件,比如某臺電腦,某本書,某個人……而類就是根據物件相似的特徵和功能進行分類,物件是具體的,類是抽象的。二、類的基本格式public class 類名 {//定義屬性訪問修飾符  資料型別  屬性名;//定義

Java物件簡單學習

今天我們來了解一下Java的類與物件和麵向物件。 ** 一、面向物件思想 ** 1.什麼是面向物件 概述: Java語言是一種面向物件的程式設計語言,而面向物件思想是一種程式設計思想,我們在面向物件思想的指引下, 使用Java語言去設計、開發計算機

淺談JAVA物件理解

   我們知道程式語言是一個幫助我們和計算機“對話”的工具,我們可以通過它去讓計算機做一些事。而JAVA語言又是其中的高階語言,那麼什麼是高階?機器語言和人類語言之間有著巨大的鴻溝,人們不斷的想要跨過這個鴻溝,在這個過程中出現了一些“工具”,就是所謂的程式語言。通過這些語言

Java物件例項的理解

  最近在看Python,這門面向物件的語言又引起了類的引用、物件和例項這些概念之間的糾結,我按照自己的理解總結了一下Java裡三者的關係,如果有不對的地方還希望大家指出。   類的引用和物件的概念沒什麼好弄混的,但是物件和例項之間的區別讓人疑惑,在《Thin

關於初學者如何理解面向物件和麵向過程的區別以及java中的物件

首先java是一門面向物件的程式語言,特別是當你剛入門C語言的同時又進行java語言的學習,這個問題就體現出來了。C語言是面向過程的程式語言,它們兩種語言處理問題的方式是不一樣的。 面向過程的程式語言的設計思路按步驟走的,你需要手把手的教它。例如上課鈴響了,學

java理解程式邏輯第11章物件複習作業

1.物件是用來描述客觀事物的一個實體,由一組屬性和方法構成。 2.類定義了物件將會擁有的特徵(屬性)和行為(方法)。 3.類和物件的關係是抽象和具體的關係。類是物件的型別,物件是類的例項。 4.物件的屬性和方法被共同封裝在類中,相輔相成,不可分解。 ‘5.類的使用步驟:

java中的物件

類 類在客觀世界裡是不存在的,是描寫物件的資訊 類是模子,確定物件將會擁有的特徵(屬性)和行為(方法)  類的特點 類是物件的型別 具有相同屬性和方法的一組物件的集合 屬性(特徵) int cpu  = 5.5; int screen 

java作業 物件

第二題風扇: 我的程式碼: package pack1; public class Fan { final int SLOW=1; final int MEDIUM=2; final int FAST=3; private int speed=SLOW; private bo

java--物件方法

一個榨汁機的例子: 實現客戶購買的各種需求: 1.一杯某某果汁 2.幾杯某某果汁 3.幾杯某某果汁+幾杯某某果汁+…+幾杯某某果汁 的組合 四個類: (1)Order類 package FruitJuiceShop; /** * 訂單類 * @author MacBook

Java基礎 實驗二:物件

1.實驗目的 掌握類的宣告、物件的建立、方法的定義和呼叫、建構函式的使用。 2.實驗內容 1)定義一個表示學生資訊的類Student,要求如下: ① 類Student的成員變數:       sNO 表示學號;      

Java練習 SDUT-3339_計算長方形的周長和麵積(物件

計算長方形的周長和麵積(類和物件) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 設計一個長方形類Rect,計算長方形的周長與面積。 成員變數:整型、私有的資料成員length(長)、width(寬); 構造方法如下: (

Java入門系列-14-深入物件

這篇文章用大量的程式碼幫你搞懂:值傳遞和引用傳遞、構造方法、方法過載、static關鍵字的使用 方法引數傳遞-值傳遞和引用傳遞 1.值傳遞 敲一敲: /** * 使用方法交換兩個變數的值 * @author Jack * */ public class Swap {