Java三大特征:封装 继承 多态

时间:2022-02-10 23:58:09

内部类:成员内部类、静态内部类、方法内部类、匿名内部类。

内部类:定义在另外一个类里面的类,与之对应,包含内部类的外部类被称为外部类。

内部类的作用:(1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,部允许同一个包中其他类昂问该类。(2)内部类的方法可以直接访问外部类的所有数据,包括私有数据。(3)内部类所实现的功能使用外部类照样可以实现,只是有时使用内部类更方便。

成员内部类(普通内部类):内部类创建对象时,必须使用外部类对象来创建,而不能直接用new创建一个内部对象,即内部类 对象名=外部类对象. new 内部类();外部类不能直接调用内部类方法,必须通过内部类对象来访问其属性和方法。如果外部类和内部类具有相同的属性或方法,内部类默认访问自己的属性和方法。如果需要访问外部类的成员变量,可以用this关键字,即外部类.this.属性名/方法.

静态内部类:是static修饰的内部类。特点是:(1)静态内部类不能访问外部类的非静态成员,但是可以通过new外部类().成员来访问。(2)如果外部类静态成员与内部类成员名相同,可通过类名.静态成员来访问外部类静态成员;如果外部类的静态成员与内部类成员名称不同,则可以通过成员名直接访问外部类的静态成员。

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

方法内部类:内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在方法内可以使用。由于方法内部类不能在外部类以外的地方使用,因此方法内部类不能使用访问控制符和static修饰。

 

 

继承

子类拥有父类的所有属性和方法,除了父类私有成员。

继承初始化顺序:(1)初始化父类再初始化子类。(2)先执行初始化对象中的属性,再执行构造方法中的初始化。

final关键字:final可以修饰类、方法、属性、变量。final修饰类的画,此类不能被继承;final修饰方法的话,此方法不能被重写;final修饰属性的话,则该属性不会隐式初始化,类的初始化必须有值,要么在声明时赋值,要么在构造方法中赋值;final修饰变量的话,变量变为常量,而且仅能赋值一次。

super关键字:在对象内部表示父类对象。

super应用:(1)如果子类的构造方法没有显式调用父类的构造方法,则系统默认调用父类无参构造方法。(2)如果显式调用父类的构造方法,必须放在第一行。(3)如果子类构造方法既没有显式调用父类构造方法,而且父类方法没有无参构造方法,则编译出错。

 

 

多态

父类引用指向本类对象(执行本类方法);父类引用指向子类对象(要么执行子类方法,要么执行继承的父类方法)。

abstract修饰符

作用:限制子类必须实现的方法,不关注如何实现。

使用规则:(1)abstract定义抽象类;(2)abstract修饰抽象方法,只有声明,不用实现(抽象方法没有执行体大括号,并且以分号结束);(3)包含抽象方法的类是抽象类;(4)抽象类中可以包含抽象方法,也可以没有抽象方法;(5)抽象类不能直接创建,可以定义引用变量。

 

 

接口

接口由全局变量和公共的抽象方法所组成,规定某些类的实现方法,用关键字interface定义接口,即[修饰符] interface 接口名 [extends 父接口1,父接口2...]{0——n个常量定义;

0——n个抽象方法定义;}

接口通常是用来被继承、被实现的,修饰符一般用public,不能用private和protected修饰接口。接口必须有abstract修饰,接口可以定义多个父接口,因为接口中的都是常量,所以系统默认用public static final修饰常量,即使常量前没有修饰符修饰,系统也会自动加上。因为接口中全是抽象方法,所以系统默认用public abstact [修饰符] 修饰方法,即使方法前没有修饰符,系统也会自动加上。

一个类可以实现一个或多个接口,用implements实现,如果要继承父类,继承父类必须在实现接口之前。接口的使用是通过接口的引用指向实现接口的对象。接口经常配合匿名内部类使用,如:interface i=new interface(){  public void method(){}  };(必须有分号) 

 

 

 

包名命名规范应该全是小写字母。

import中的*只能代表类,不能代表包。如果使用其他类,必须使用import导入。

Java.lang.Object是所有类的父类。

object是所有类的父类。以下是它的两个重要方法。

(1)toString()

(2)equals(),比较的是对象是否指向同一块内存地址。

类对象:描述的是类的代码信息,即类的属性。

类的对象:描述的是类的数据域,即类的属性值。