Heim  >  Artikel  >  Java  >  Was sind die drei Hauptmerkmale von Java?

Was sind die drei Hauptmerkmale von Java?

青灯夜游
青灯夜游Original
2023-01-06 14:30:2526696Durchsuche

Die drei Hauptmerkmale von Java sind: 1. Kapselung, was bedeutet, dass bestimmte Informationen einer Klasse innerhalb der Klasse verborgen werden und kein direkter Zugriff durch externe Programme möglich ist. Stattdessen werden die Operationen und der Zugriff auf die verborgenen Informationen durch die bereitgestellten Methoden realisiert von der Klasse. 2. Vererbung bedeutet, dass die Unterklasse über alle Eigenschaften und Methoden der übergeordneten Klasse verfügt, wodurch die Wiederverwendung von Code realisiert wird. 3. Polymorphismus bedeutet, dass Referenzen der übergeordneten Klasse auf Objekte der untergeordneten Klasse verweisen und so mehrere Formen erzeugen.

Was sind die drei Hauptmerkmale von Java?

Die Betriebsumgebung dieses Tutorials: Windows7-System, Java8-Version, DELL G3-Computer.

Drei Hauptmerkmale von Java

Drei Hauptmerkmale von objektorientiert: Kapselung, Vererbung, Polymorphismus.

Kapselung:

  • Verstecken Sie einige Informationen der Klasse innerhalb der Klasse und erlauben Sie keinen direkten Zugriff durch externe Programme. Stattdessen werden die Operationen und der Zugriff auf die verborgenen Informationen über die von der Klasse bereitgestellten Methoden implementiert.

Vererbung:

  • Die Unterklasse besitzt alle Attribute und Methoden der übergeordneten Klasse (mit Ausnahme privat geänderter Attribute, die nicht besessen werden können), wodurch die Wiederverwendung von Implementierungscode realisiert wird;

Polymorphismus:

  • Verwenden Referenzen der übergeordneten Klasse Akzeptieren, Objektinstanzen verschiedener Unterklassen, Referenzen der übergeordneten Klasse rufen dieselbe Methode auf und erzeugen je nach Instanz der Unterklasse unterschiedliche Ergebnisse ist Kapselung

Konzept: Verstecken Sie die internen Implementierungsdetails des Objekts so weit wie möglich und steuern Sie die Änderungs- und Zugriffsberechtigungen des Objekts. Zugriffsmodifikator: privat (Attribute können als privat geändert werden, nur für diese Klasse sichtbar)

2) Öffentliche Zugriffsmethoden

liegen in Form von Zugriffsmethoden vor, um Zuweisungs- und Werterfassungsvorgänge abzuschließen. Problem: Die illegale Dateneingabe ist immer noch nicht gelöst!

Stellen Sie öffentliche Zugriffsmethoden bereit, um eine normale Dateneingabe sicherzustellen.

Namenskonvention:

Zuweisung: setXXX() //Methodenparameter verwenden, um Zuweisung zu erreichenWert: getXXX() //Methodenrückgabewert verwenden, um Wert zu erreichen

3) Beispiel
  • public static void main(String[] args) {
    		int a;
    		Num num = new Num();
    //		传入值100
    		num.setNum(100);
    		System.out.println(num.getNum());
    	}
    private int a;
    
    //	在调用get方法时,返回本类a的值
    	public int getNum() {
    		return a;
    	}
    
    //	接受传入的值100,并赋值给本类的a
    	public void setNum(int num) {
    		this.a = num;
    	}
  • 4) Filtern Sie gültige Daten
  • Fügen Sie bei der öffentlichen Zugriffsmethode logisches Urteilsvermögen hinzu, um illegale Daten herauszufiltern und so die Datensicherheit zu gewährleisten.

5) Zusammenfassung

Die Get/Set-Methode ist die einzige Möglichkeit für die Außenwelt, auf die privaten Eigenschaften des Objekts zuzugreifen, und die Daten können innerhalb der Methode erkannt und gefiltert werden.

2. Vererbung

1) Vererbung im Programm

Vererbung im Programm ist eine Schenkung oder ein Erwerb von Merkmalen und Verhaltensweisen zwischen Klassen. Die Vererbungsbeziehung zwischen zwei Klassen muss die „ist ein“-Beziehung erfüllen.

2) Auswahl der übergeordneten Klasse

  • Im wirklichen Leben gibt es Vererbungsbeziehungen zwischen vielen Kategorien, die alle die „ist ein“-Beziehung erfüllen.
  • Ein Hund ist ein Tier, ein Hund ist ein Lebewesen und ein Hund ist eine Substanz.

Mehrere Kategorien können als übergeordnete Kategorie von „Hund“ verwendet werden, und Sie müssen unter ihnen die am besten geeignete übergeordnete Kategorie auswählen.

    Je raffinierter die Funktion ist, desto mehr überlappende Punkte gibt es und desto näher liegt sie an der direkten übergeordneten Klasse.
  • Je rauer die Funktion, desto weniger überlappende Punkte und desto näher liegt sie an der Object-Klasse. (Das Konzept, dass alles ein Objekt ist)
  • 3) Vererbung
  • Syntax: Klasse Unterklasse erweitert übergeordnete Klasse { } //Beim Definieren einer Unterklasse die Vererbung von der übergeordneten Klasse anzeigen
  • public class 子类名 extends 父类名{
    	
    	//代码块
    	}

    Anwendung : Vererbung generieren Nach der Beziehung kann die Unterklasse die Eigenschaften und Methoden der übergeordneten Klasse verwenden oder für die Unterklasse eindeutige Eigenschaften und Methoden definieren.

  • Vorteile: Es verbessert nicht nur die Wiederverwendbarkeit des Codes, sondern auch die Skalierbarkeit des Codes.

4) Merkmale der Vererbung

Eine Klasse kann nur eine direkte übergeordnete Klasse haben, es kann jedoch eine mehrstufige Vererbung geben, und Attribute und Methoden können Schritt für Schritt überlagert werden.

5) Nicht vererbbar

Konstruktormethode: Die Konstruktormethode in einer Klasse ist nur für die Erstellung von Objekten dieser Klasse verantwortlich und kann nicht vererbt werden. Privat-modifizierte Eigenschaften und Methoden: eine Art Zugriffsmodifikator, der nur für diese Klasse sichtbar ist. Wenn sich die übergeordnete und untergeordnete Klasse nicht im selben Paket befinden, werden die Attribute und Methoden standardmäßig geändert: eine Art Zugriffsmodifikator, der nur im selben Paket sichtbar ist. 3. Methodenumschreiben

Der Rückgabewerttyp muss mit dem der übergeordneten Klasse oder ihrer Unterklasse identisch sein.

Der Zugriffsmodifikator kann mit dem der übergeordneten Klasse identisch oder breiter als die übergeordnete Klasse sein. Ausführung des Methodenumschreibens:

Nachdem eine Unterklasse eine übergeordnete Klassenmethode umgeschrieben hat, wird beim Aufruf zuerst die umgeschriebene Methode der Unterklasse ausgeführt.

Merkmale des Methodenüberschreibens:

Wenn eine Unterklasse eine Methode der übergeordneten Klasse überschreibt, überschreibt die Methode der Unterklasse die Methode der übergeordneten Klasse. Wenn eine Unterklasse eine übergeordnete Klassenmethode überschreibt, darf die Zugriffsebene nicht strenger sein als die der übergeordneten Klassenmethode. Der Name und der Typ der Überschreibungsmethode der Unterklasse sind mit denen der übergeordneten Klasse identisch.

父类的构造方法无法重写,只能被覆盖。

示例:

//父类
public class Animal {
//	父类中吃的方法会输出“玩玩玩”
	public void play() {
		System.out.println("玩玩玩");
	}

//	父类中睡的方法会输出“睡睡睡”
	public void sleep() {
		System.out.println("睡睡睡");
	}

}
/**
 * 狗类继承 父类
 */
public class Dog extends Animal {

//	进行方法重写,将方法重写输出为“狗玩飞碟”
	public void play() {
		System.out.println("狗玩飞碟");
	}
}
public class Test {

	public static void main(String[] args) {
		// 实例化宠物对象
		Dog d = new Dog();
		d.play();
		d.sleep();
	}

}

运行输出:

Was sind die drei Hauptmerkmale von Java?

2)方法重写与方法重载的区别

相同点:方法名相同
不同点:
重载:参数列表不同,返回值与访问修饰符无关
重写:参数列表相同,返回值相同或其子类,访问修饰符不能比父类更严

4、super关键字

1)super关键字

super关键字可在子类中访问父类的方法。

  • 使用”super.”的形式访问父类的方法,进而完成在子类中的复用;
  • 再叠加额外的功能代码,组成新的功能。

2)super调用父类无参构造

super():表示调用父类无参构造方法。如果没有显示书写,隐式存在于子类构造方法的首行。

3)super调用父类有参构造

super():表示调用父类无参构造方法。

super(实参):表示调用父类有参构造方法。
参构造被执行

4)this与super

this或super使用在构造方法中时,都要求在首行。
当子类构造中使用了this()或this(实参),即不可再同时书写super()或super(实参),会由this()指向构造方法完成super()调用。

class A{
		public A(){
		System.out.println(( "A-无参构造"));
		}
		public A(int value) {
		System.out.println(("A-有参构造")); 
		}
		}
		class B extends A{
		public B(){
		super();
		System.out.println( "B-无参构造");
		}
		public B(int value) {
//		super();这两货不能跟同时存在
		this();
		System.out.println(("B-有参构造"));
		}
		}

5、多态

概念:父类引用指向子类对象,从而产生多种形态。

二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态。

父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法。

1)多态的应用

方法重载可以解决接收不同对象参数的问题,但其缺点也比较明显。

  • 首先,随着子类的增加,Master类需要继续提供大量的方法重载,多次修改并重新编译源文件。
  • 其次,每一个feed方法与某一种具体类型形成了密不可分的关系,耦合太高。

场景一:使用父类作为方法形参实现多态,使方法参数的类型更为宽泛。

public class Animal {
//		父类中吃的方法会输出“玩玩玩”
	public void play() {
		System.out.println("玩玩玩");
	}

//	父类中睡的方法会输出“睡睡睡”
	public void sleep() {
		System.out.println("睡睡睡");
	}

}
/**
 * 狗类继承 父类
 * 
 * 
 *
 */
public class Dog extends Animal {

//	狗类特有的方法“狗吃狗粮”
	public void eat() {
		System.out.println("狗吃狗粮");
	}

}
public class Test {

	public static void main(String[] args) {
		// 实例化宠物对象
		Animal d = new Dog();
		d.play();
		d.sleep();
//		The method eat() is undefined for the type Animal
//		对于类型动物,eat()方法未定义
//		当我们去调用子类对象的特有方法时,就会爆出上面的错误提示
//		如果想要实现子类特有方法,就必须要强转
//		d.eat();
		((Dog) d).eat();
	}

}

运行输出:

Was sind die drei Hauptmerkmale von Java?

场景二:使用父类作为方法返回值实现多态,使方法可以返回不同子类对象。

示例:

//动物类  父类
public class Animal {
	public void food() {
		System.out.println("...");
	}
}
//用extends关键字,继承父类属性
public class Dog extends Animal {

	public void food() {
		System.out.println("狗吃狗粮");
	}

	public void runing() {
		System.out.println("一直跑跑跳跳");
	}
}
//用extends关键字,继承父类属性
public class Fish extends Animal {
	public void food() {
		System.out.println("大鱼吃小鱼,小鱼吃虾米");
	}

	public void swimming() {
		System.out.println("小鱼儿,一直游");
	}
}
public class Master {
//	传入你的动物,并去给它喂食
	public void food(Animal animal) {
		System.out.println("喂食");
		animal.food();
	}
}
import java.util.Scanner;

public class Shopping {
//	你没有动物,所以animal为空
	Animal animal = null;

//	判断你要购买的宠物,并返回宠物类(狗、鱼)
	public Animal shopping(int a) {
		if (a == 1) {
			animal = new Dog();
		} else if (a == 2) {
			animal = new Fish();
		}
//		this.animal=animal;
		return animal;
	}

	public void showMenu() {
		Scanner input = new Scanner(System.in);
		System.out.println("欢迎来到一只宠物宠物店");
		System.out.println("请选择喜欢的宠物:");
		System.out.println("1.狗 2.鱼 ");
		int a = input.nextInt();
		Animal animal = shopping(a);
		Master mm = new Master();
		mm.food(animal);
//		用instanceof判断你买的是狗还是鱼。
//		狗就执行狗的属性和方法,鱼就执行鱼的属性和方法
		if (animal instanceof Dog) {
			Dog d = (Dog) animal;
			d.runing();
		} else if (animal instanceof Fish) {
			Fish f = (Fish) animal;
			f.swimming();
		}

	}
}
//测试类
public class text {
	public static void main(String[] args) {
		Shopping shop = new Shopping();
		shop.showMenu();
	}
}

运行结果:

Was sind die drei Hauptmerkmale von Java?

2)多态的静态和动态实现

动态绑定:即为重写/覆盖,方法的重写

动态绑定也叫后期绑定,在运行时,虚拟机根据具体对象实例的类型进行绑定,或者说是只有对象在虚拟机中运行创建了之后,才能确定方法属于哪一个对象实例的

  • 根据实际对象是什么,就去找相应对象方法去执行。
  • 动态绑定是在运行时才会执行(例如重写的方法)。

静态绑定:即为重载,方法的重载

一个方法的参数在编译阶段常被静态地绑定,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数

  • 根据类型找相应的属性或者静态变量。
  • 静态绑定是在编译时执行(如成员变量,静态方法)。

更多编程相关知识,请访问:编程教学!!

Das obige ist der detaillierte Inhalt vonWas sind die drei Hauptmerkmale von Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn