cari
RumahJavaJavaAsasApakah tiga ciri utama java
Apakah tiga ciri utama javaJan 06, 2023 pm 02:30 PM
java

Tiga ciri utama Java ialah: 1. Enkapsulasi, iaitu menyembunyikan beberapa maklumat kelas di dalam kelas dan tidak membenarkan akses langsung oleh program luaran Sebaliknya, maklumat tersembunyi direalisasikan melalui kaedah yang disediakan oleh kelas operasi dan akses. 2. Warisan bermakna subkelas mempunyai semua sifat dan kaedah kelas induk, dengan itu merealisasikan penggunaan semula kod. 3. Polimorfisme bermaksud rujukan kelas induk menunjuk kepada objek subkelas, dengan itu menghasilkan pelbagai bentuk.

Apakah tiga ciri utama java

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Java 8, komputer DELL G3.

Tiga ciri utama Java

Tiga ciri utama berorientasikan objek: enkapsulasi, pewarisan, polimorfisme.

Encapsulation:

  • menyembunyikan beberapa maklumat kelas di dalam kelas dan tidak membenarkan akses langsung oleh program luaran, sebaliknya, maklumat tersembunyi dikendalikan melalui kaedah yang disediakan oleh kelas dan akses.

Warisan:

  • Subkelas memiliki semua atribut dan kaedah kelas induk (kecuali atribut diubah suai peribadi yang tidak boleh dimiliki), dengan itu merealisasikan penggunaan semula kod pelaksanaan ;

Polymorphism:

  • menggunakan rujukan kelas induk untuk menerima contoh objek subkelas yang berbeza Rujukan kelas induk memanggil kaedah yang sama, dan menghasilkan kejadian yang berbeza mengikut subkelas. Keputusan yang berbeza

1. ) Apakah enkapsulasi

Konsep: Sembunyikan butiran pelaksanaan dalaman objek sebanyak mungkin, dan kawal pengubahsuaian dan kebenaran akses objek.

Pengubah suai akses: peribadi (atribut boleh diubah suai sebagai peribadi, kelihatan hanya kepada kelas ini)

2) Kaedah akses awam

Dalam bentuk kaedah capaian, tugasan dan operasi pemerolehan nilai selesai.

Masalah: Kemasukan data haram masih tidak diselesaikan! Sediakan kaedah akses awam untuk memastikan kemasukan data biasa.

Konvensyen penamaan:

Tugasan: setXXX() //Gunakan parameter kaedah untuk mencapai penetapan nilai

    Nilai: getXXX() //Gunakan nilai pulangan kaedah untuk mencapai nilai
  • 3) Contoh

4) Tapis data yang sah

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;
	}
Dalam kaedah akses awam, tambahkan pertimbangan logik untuk menapis data haram bagi memastikan keselamatan data.

5) Ringkasan

Kaedah get/set ialah satu-satunya saluran untuk dunia luar mengakses sifat peribadi objek itu, dan data boleh dikesan dan ditapis di dalam kaedah.

2. Pewarisan

1) Warisan dalam program

Warisan dalam program ialah pemberian atau pemerolehan ciri dan tingkah laku antara kelas. Hubungan pewarisan antara dua kelas mesti memenuhi hubungan "adalah".

    2) Pilihan kelas induk

Dalam kehidupan sebenar, terdapat perbezaan antara banyak kategori Warisan perhubungan semuanya memuaskan perhubungan "adalah".

Anjing adalah haiwan, anjing adalah makhluk hidup, dan anjing adalah zat.
  • Berbilang kategori boleh digunakan sebagai kategori induk "anjing", dan kategori induk yang paling sesuai perlu dipilih.
  • Semakin diperhalusi fungsi, semakin banyak titik bertindih dan semakin hampir dengan kelas induk langsung.
  • Semakin kasar fungsi, semakin sedikit titik bertindih dan semakin hampir dengan kelas Objek. (Konsep bahawa segala-galanya adalah objek)
  • 3) Warisan

Sintaks: subkelas kelas memanjang Kelas induk { } //Apabila mentakrifkan subkelas, paparkan kelas induk yang diwarisi Aplikasi: Selepas perhubungan warisan dijana, subkelas boleh menggunakan atribut dan kaedah dalam kelas induk, atau tentukan subkelas Sifat dan kaedah unik.

Faedah: Ia bukan sahaja meningkatkan kebolehgunaan semula kod, tetapi juga meningkatkan kebolehskalaan kod.

public class 子类名 extends 父类名{
	
	//代码块
	}

4) Ciri-ciri warisan

Java ialah warisan tunggal Sesebuah kelas hanya boleh mempunyai satu kelas induk langsung, tetapi ia boleh mempunyai berbilang-. pewarisan peringkat. Sifat dan kaedah menyusun satu peringkat pada satu masa.

5) Tidak boleh diwarisi

Kaedah pembina: Kaedah pembina dalam kelas hanya bertanggungjawab untuk mencipta objek kelas ini dan tidak boleh diwarisi .

Sifat dan kaedah diubah suai peribadi: sejenis pengubah suai akses, hanya boleh dilihat oleh kelas ini. Apabila kelas induk dan anak tidak berada dalam pakej yang sama, atribut dan kaedah diubah suai secara lalai: sejenis pengubah suai akses, hanya boleh dilihat dalam pakej yang sama.

3 Kaedah menulis semula

1) Kaedah menulis semula /Timpa <.> Prinsip penulisan semula kaedah:

Nama kaedah dan senarai parameter adalah sama dengan kelas induk. Jenis nilai pulangan mestilah sama dengan kelas induk atau subkelasnya

Pengubah suai akses boleh sama dengan kelas induk atau lebih luas daripada kelas induk.

    Pelaksanaan penulisan semula kaedah:
  • Selepas subkelas menulis semula kaedah kelas induk, kaedah penulisan semula subkelas akan dilaksanakan dahulu apabila memanggil.

Ciri kaedah mengatasi:

    Apabila subkelas mengatasi kaedah kelas induk, kaedah subkelas akan mengatasi kaedah kelas induk.
  • Subkelas mengatasi kaedah kelas induk dan tahap akses tidak boleh lebih ketat daripada kaedah kelas induk.

  • Nama dan jenis kaedah penggantian subkelas adalah sama dengan kelas induk.
  • 父类的构造方法无法重写,只能被覆盖。

示例:

//父类
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();
	}

}

运行输出:

Apakah tiga ciri utama 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();
	}

}

运行输出:

Apakah tiga ciri utama 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();
	}
}

运行结果:

Apakah tiga ciri utama java

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

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

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

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

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

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

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

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

Atas ialah kandungan terperinci Apakah tiga ciri utama java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
带你搞懂Java结构化数据处理开源库SPL带你搞懂Java结构化数据处理开源库SPLMay 24, 2022 pm 01:34 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

Java集合框架之PriorityQueue优先级队列Java集合框架之PriorityQueue优先级队列Jun 09, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

完全掌握Java锁(图文解析)完全掌握Java锁(图文解析)Jun 14, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

一起聊聊Java多线程之线程安全问题一起聊聊Java多线程之线程安全问题Apr 21, 2022 pm 06:17 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

详细解析Java的this和super关键字详细解析Java的this和super关键字Apr 30, 2022 am 09:00 AM

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

Java基础归纳之枚举Java基础归纳之枚举May 26, 2022 am 11:50 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

java中封装是什么java中封装是什么May 16, 2019 pm 06:08 PM

封装是一种信息隐藏技术,是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法;封装可以被认为是一个保护屏障,防止指定类的代码和数据被外部类定义的代码随机访问。封装可以通过关键字private,protected和public实现。

归纳整理JAVA装饰器模式(实例详解)归纳整理JAVA装饰器模式(实例详解)May 05, 2022 pm 06:48 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于设计模式的相关问题,主要将装饰器模式的相关内容,指在不改变现有对象结构的情况下,动态地给该对象增加一些职责的模式,希望对大家有帮助。

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual