Java学习记录day8

类与对象

继承例题

https://www.bilibili.com/video/BV1PU4y1E7nX?p=55&vd_source=8f80327daa664c039f5c342a25bcbbae(B站千峰马剑威Java基础入门视频第P55,记录的重要学习内容之一)

final关键字

作用:

  1. 声明一个常量(常用规范命名建议全大写),修饰属性或修饰局部变量(最终变量),也成常量(不能改变);
  2. 声明一个方法,该方法为最终方法,且只能被子类继承,但是不能被子类重写;
  3. 声明一个类,该类为最终类,没有子类的类,无法被继承;
  4. 在方法参数中使用,在内部类中不能修改参数值,在内部类中详解。
public class Test{
	public static void main(String[] args){
		System.out.println(Constant.TEN_NUM);
	}
}
//常量类,常量可以另起一类定义防止访问时出问题
public final class Constant{
	public static final int TEN_NUM = 10;//常量通常这么定义(权限自定义)
}

抽象类

很多具有相同特征的和行为的对象可以抽象为一个类,很多和相同特征和行为的类可以抽象为一个抽象类;使用abstract关键字声明类为抽象类。
抽象类中有抽象方法、成员变量、构造方法和其他成员方法。
抽象类中的抽象方法,即只有定义没有实现,也就是没有大括号的内容直接把大括号换位了分号,然后在具体类中重写方法实现方法的具体功能,也就是说抽象类本身并不能运行也不能被实例化,就是用来作为父类被继承的。
抽象类不能个被声明为final

public class Test{
	public static void main(String[] args){
		Villa villa = new Villa();
		villa.color();
		villa.buildFloor();
		villa.buildTepy();
	}
}
public abstract class Building{
	private String name;
	private int age;
	public Building(String name) {
		this.name = name;
	}	
	// 抽象方法    没有方法的实现
	public abstract void buildTepy();
	//成员方法
	public void color() {
		System.out.println("colorful");
	}
}
//抽象方法可以继承抽象方法
public abstract class House extends Building{
	public abstract void buildFloor();
}
public class Villa extends House{
	@Override
	public void color() {
		// TODO Auto-generated method stub
		System.out.println("red");
	}
	//在子类中实现
	@Override
	public void buildTepy(){
		System.out.println("别墅");
	}
	@Override
	public void buildFloor(){
		System.out.println("3层");
	}
}

接口

接口方便我们拓展代码,如果写好的系统想去添加功能,不用去找代码的相关模块并修改,直接使用接口添加,然后在主函数中电泳即可。
接口相当于特殊的抽象类,接口里面都是抽象方法,通过接口不能创建对象。
定义格式:
修饰符 interface 接口名 {
常量
抽象方法
default修饰的方法
static 修饰的方法
}

public class Test{
	public static void main(String[] args){
		Villa villa = new Villa();
		villa.color();
		villa.buildFloor();
		villa.buildTepy();
	}
}

//与抽象类类似,接口类也可以被继承,这里不再写出,有兴趣可以尝试
public abstract class House{
	void buildFloor();//接口方法中可以不用修饰符,默认为public abstract
	void buildTepy();
	void color();
	//JDK1.8之后可用
	public default void print(){
		System.out.println("default");
	}
}
public class Villa extends House{
	@Override
	public void color() {
		// TODO Auto-generated method stub
		System.out.println("red");
	}
	//在子类中实现
	@Override
	public void buildTepy(){
		System.out.println("别墅");
	}
	@Override
	public void buildFloor(){
		System.out.println("3层");
	}
}

多态

多态性是对象在运行的过程中的多种形态。父类变量可以引用子类的对象,调用相同的方法,展示多种形态(表现不一样),方法的重载和重写也是多态。
例:Dog dog = new SingleDog();
对象的多态性:
**向上转型:**将子类实例转为父类引用,会自动转换:父类 父类对象 = 子类实例 例:int i = ‘a’;
**向下转型:**将父类实例转为子类引用,强制转换: 子类 子类对象 = 父类实例 例:char c = (char)97;

instanceof关键字

用于检查对象是否为指定的类型,通常把父类强制转换为子类引用时要使用,以避免发生类型转换异常。
对象 instanceof 类型 返回boolean类型值
例:

if(singleDog instanceof Dog){}

一般用于判断一个对象是否为某个类的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值