-
内部类 对象名 = 外部类对象.new 内部类( );
查看全部 -
Inner类可以使用任意访问控制符
查看全部 -
使用抽象类来描述一个类的规则更合理。
查看全部 -
接口定义: [修饰符]interface 接口名(extends 父接口1,父接口2) 修饰符不能用private和protected查看全部
-
1.抽象类是父类,限制子类必须具有哪些方法,不关注实现过程。 public abstract void call();没有花括号方法体 2.抽象类不能直接创建对象,要用引用。 Shap circle = new Circle();查看全部
-
接口可以多继承,继承多个父接口的时候需要用中括号括起来。接口中的属性都是常量,即使定义时不添加public static final 修饰符,系统也会自动加上。接口中的方法都是抽象方法,即使定义时不添加public abstract修饰符,系统也会自动加上。
定义接口类的时候省略了abstract
定义接口类中的方法时也省略了abstract
查看全部 -
包含抽象方法的类一定是抽象类,抽象类和抽象方法都需要添加关键字 abstract,且顺序为 abstract class
查看全部 -
父类的引用是可以指向子类对象的
通过instanceof关键字避免强制类型转换存在的问题。
引用类型转换:
向上类型转换(隐式/自动类型转换)是小类型到大类型的转换
向下类型转换(强制类型转换)是大类习性到小类型
instanceof运算符来解决引用对象的类型,避免类型转换的安全性问题
表示前面的类型是否含有后面的类型,返回boolean
可用if与instanceof搭配
例子:if(animal instanceof Cat){
Cat cat=(Cat)animal;
}else{
System.out.println("无法将类型转换成Cat类型");
}
查看全部 -
引用多态
①父类的引用可以指向本类的对象
②父类的引用也可以指向继承的子类的对象
方法的多态
① 父类引用可以调用本类自己的方法
②父类引用也可以调用继承的子类的方法
注意: 若继承的子类没有重写,默认指向父类的方法. 若子类有单独的方法不是通过继承来的,父类的引用是不可以调用的
查看全部 -
接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。
类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的细节,它只规定这些类里必须提供某些方法。
定义接口不再使用class关键字,而是使用interface字。
【修饰符】interface 接口名【extend 父接口1,父接口2..】,父接口可以继承也可以不继承
{ 零个到多个常量定义,零个到多个抽象方法的定义
}
实现接口使用implements关键字,如果要继承父类,继承父类必须在接口之前。
查看全部 -
没有重写 toString 方法的情况下直接用 print 打印对象,输出的是(对象的地址 )
重写后输出的是对象的值。
查看全部 -
在某些情况下,某个父类只是知道其子类应该包含怎么样的方法,但是无法准确知道这些子类如何实现这些方法。抽象类只是约束子类应该有哪里方法,但是不关注其如何实现。
从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免子类设计的随意性。
abstract定义抽象方法,只有声明,不需要实现。包含抽象方法的类是抽象类。抽象类也可以包含普通的方法,也可以没有抽象方法。
抽象类不能直接创建,可以定义引用变量。抽象类方法没有方法体以分号结束。
查看全部 -
public class HelloWorld {
String name; // 声明变量name
String sex; // 声明变量sex
static int age;// 声明静态变量age
// 构造方法
public HelloWorld() {
System.out.println("通过构造方法初始化name");
name = "tom";
}
// 初始化块
{
System.out.println("通过初始化块初始化sex");
sex = "男";
}
// 静态初始化块
static {
System.out.println("通过静态初始化块初始化age");
age = 20;
}
public void show() {
System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
}
public static void main(String[] args) {
// 创建对象
HelloWorld hello = new HelloWorld();
// 调用对象的show方法
hello.show();
查看全部 -
super的应用
子类的构造的过程当中必须调用其父类的构造方法。 如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参的构造方法 如果显式的调用构造方法,必须在子类的构造方法的第一行。 如果子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。
查看全部 -
final关键字
使用final关键字做标识有“最终的”含义
final可以修饰类、方法、属性和变量
final修饰类,则该类不允许被继承
final修饰方法,则该方法不允许被覆盖(重写)
final修饰属性
则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
final修饰变量,则该变量的值只能赋一次值,即变为常量
查看全部
举报