final、super关键字、抽象类、类的继承

final理解成最终的意思

final定义的类是不可被继承的

final class A{
}
class B extends A{
} //错误,A不能被继承

final 修饰的变量为常量,不可被更改,但是要大写

final String IN = "in";

final定义的方法无法被子类覆盖

super关键字

super 和this一个理解成父类,一个理解成子类
this() 、super() 都当成子类父类的构造方法
super.get()就是调用父类的方法
this.get()就是调用自己类的方法

抽象类 abstract class

抽象类不能直接被用来实例化,只能实例化他的衍生类
抽象类中的抽象方法必须被子类全部覆写

类的继承

方法的覆写

子类的访问权限不能比父类更严格

类的构造方法

子类在实例化的时候,会自动调用父类的构造方法。
如果父类的构造方法是不用传参的,并且是写出来的构造方法而不是系统默认的,那么super()可以省略,否则要先用super完成父类的构造方法

abstract class A {
	public A(String a) {
		System.out.println(a);
	}
	 void print() {
		System.out.println("happy today");
	}
}

class B extends A{
	public B(String b){
		super(b);   //子类会自动调用父类的构造方法
		System.out.println("today");		
	}
	 void print() {
		System.out.println("error");
	}
}

public class _5_jicheng {
	public static void main(String[] args) {
		B b = new B("HAPPY");
		b.print();
	}

}

如果A 中有0参构造方法,super()就可以省略

package jvm;

abstract class A {
	public A(String a) {
		System.out.println(a);
	}
	public A() {
		System.out.println("0000");
	}
	 void print() {
		System.out.println("happy today");
	}
}

class B extends A{
	public B(String b){
		//super();//子类会自动调用父类的构造方法
		System.out.println("today");		
	}
	 void print() {
		System.out.println("error");
	}
}

public class _5_jicheng {
	public static void main(String[] args) {
		B b = new B("HAPPY");
		b.print();
	}

类的向上、向下继承(多态性)

A是父类,B是子类, a、b分别是父类和子类的实例对象
向上继承:父类 父类对象 = 子类实例 B b = new B(); A a = b; 或者 A a = new B()
向下继承:子类 子类对象 = (子类)父类实体
向下继承之前必须先发生向上继承的关系才行
只有先 A a = new B(); B b = (B) a;

设计模式

工厂模式:实现接口的很多子类放入一个工厂类,主方法调用的是工厂类;
代理模式:给定接口,一个类作为实际类实现接口的方法,一个类作为代理类,实现更多的方法包括对实际类中方法的调用;
适配器模式:接口的方法很多都实现冗余,建设一个抽象类,实际类只用实现抽象类的部分方法就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值