Rumah Java Javabermula java面向对象特性介绍

java面向对象特性介绍

Feb 05, 2020 pm 05:54 PM
java ciri berorientasikan objek

java面向对象特性介绍

Java面向对象的三大特性:

封装、继承、多态。

一、封装

将类的信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作与访问。

封装的实现步骤:

修改属性的可见性:设为private

创建getter/setter方法:用于属性的读写

在getter/setter方法中加入属性控制语句:对属性值的合法性进行判断

(推荐学习:java视频教程

修改属性的可见性用private,例如:

//表示读取该方法中的screen
public float getScreen{
	return screen;
    }
 //有viod无返回值,变量名.属性=值,就不能直接调用可以通过变量名.getScreen()来实现
public viod setScreen(float newScreen){
	screen = newscreen;
	}
Salin selepas log masuk

变量名.属性=值 就不能直接调用可以通过变量名.getScreen()来实现。

包的作用:

1、管理Java文件

2、解决同名文件冲突

定义包:package

包名注:必须放在Java源程序的第一行包名间可以使用"."号隔开例如:com.imooc.MyClassJava中,包的命名规范是全小写字母拼写。

Java中的访问控制修饰符

public,default,protected,private

public:公有,所有类都可以访问

default:默认修饰符,同包内访问

protected:保护型。同包内以及继承了此类的外包类可以访问

private:私有类,只有本类内可以访问

final,finally,finalize(继承中)

final: 修饰符。被此修饰符修饰的类不能被继承;被此修饰符修饰的变量不能被修改,只能读取;被此修饰符修饰的方法只能使用,可以被重载,不能被重写;此修饰符不能修饰抽象类。

finally: 捕获异常后的清除操作

finalize:一个方法;主要是在GC将对象删除之前,先对对象调用一下finalize方法,来确定对象是否被引用

Java中的this关键字

//原来手动输入
public void setScreen( float newScreen){
   screen = newScreen;
   }
// 用eclips 自动生成的是
public void setScreen( float newScreen){
  this.screen = screen;
  }
Salin selepas log masuk

this.属性: 操作当前对象的属性

this.方法: 调用当前对象的方法

ecilipse中可以直接生成setter,getter方法并加入this关键字。

this关键字调用的是成员变量或成员方法静态成员、静态方法中不能用this和super关键字同时还可以返回类的引用和调用构造方法

Java 中的静态内部类

静态内部类是 static 修饰的内部类,这种内部类的特点是:

1、静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问。

2、如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员。

3、创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();。

二、继承

继承的概念:是类与类的一种关系。

继承的好处:

1)子类拥有父类的所有属性和方法(private修饰的无效)

2)实现代码复现

语法规则:class 子类 extends 父类{ }

方法的重写:

子类对父类的继承不满意,重写自己的内容且重写后优先调用子类方法

语法规则:

返回值,类型,方法名参数类型个数都要与父类集成方法相同,才叫重写

继承初始化顺序:

父类属性初始化>父类构造方法>子类属性初始化>子类构造方法 0

super关键字:

在对象的内部使用,可以代表父类对象。

访问父类的属性:super.age;

访问父类的方法:super.eat();

super的应用:

子类的构造方法过程中,必须调用父类的构造方法。

如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类的无参构造方法。

如果显示的调用构造方法,必须在子类的构造方法的第一行。

如果子类构造方法中没有显示调用父类的构造方法,父类也没有无参的构造方法,编译就会出错。

Object类:

没有标识继承了谁的类相当于继承了Object类

toString()方法:

在Object类里定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)

可以通过重写toString()方法表示出对象的属性

equals()方法:

比较的是对象的引用是否指向同一块内存地址。注意:比较两个对象equals()方法是不适用的,创建新的对象, 内存会创建新的储存地址,所以即使对象属性都一致, 也是不相等,要比较对象具体属性值相同,就需要重写equals()方法

比较getClass()返回类对象 :

getClass()返回的是类对象:描述类的代码信息,类的属性有哪些、类型是什么、变量名是什么、方法名是什么,更关注的是类的代码信息。

创建对象名返回的是类的对象:

关注的是对象的属性值得信息,或者说是这个对象数据的信息

三、多态

多态: 指的是对象的多种形态,主要分为 引用多态 、方法多态。

继承是多态的实现基础,别忘了子父类要有继承关系.

多态特性:

1、引用多态

父类引用可以指向本类对象 Animal obj1 = new Animal();

父类引用可以指向子类对象 Animal obj2 = new Dog();

但是我们不能用子类的引用指向父类对象 Dog obj3 = new Animal();//错

2、方法多态

类Animal中定义一个eat()方法,输出一个语句(动物有吃的能力); 在子类Dog中重写eat()方法,输出一个语句(狗是吃肉的); 那么我们在测试类main函数里面,如果obj1.eat() ,那么调用的是父类的方法. 若用obj2调用eat()方法,那么调用的是子类的方法。

还有一种情况,比如创建一个继承父类Animal的子类Cat ,但是Cat里并不重写继承的eat()方法. 然后,我们在测试类main函数里创建一个子类对象, Animal obj3 = new Cat(); 然后调用 obj3.eat(); 那么,结果调用的则是子类继承父类的方法. (输出结果:动物有吃的能力)。

最后一种特殊情况,多态的特性是不能使用的. 若在子类添加一个独有的方法 public void watchDoor() ,含有一句输出语句(狗具有看门的能力); 那么我们在测试类的main函数当中(得先定义好对象Animal obj2 = new Dog() ),就不能用obj2.watchDoor(),即不能通过父类的引用调用子类的方法。

相关文章教程推荐:java入门教程

Atas ialah kandungan terperinci java面向对象特性介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

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.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Akar Kuasa Dua di Jawa Akar Kuasa Dua di Jawa Aug 30, 2024 pm 04:26 PM

Panduan untuk Square Root di Java. Di sini kita membincangkan cara Square Root berfungsi di Java dengan contoh dan pelaksanaan kodnya masing-masing.

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Penjana Nombor Rawak di Jawa Penjana Nombor Rawak di Jawa Aug 30, 2024 pm 04:27 PM

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

See all articles