懒杰学Java第六天之抽象类,接口,对象的多态以及泛型

“一早起来硬是刷了一个多小时的手机才学习…”

【抽象类和接口】
1.final关键字
(1)final关键字在Java中被称为完结器,表示最终的意思。
(2)final能声明类,方法,属性:
使用final声明的类不能被继承
使用final声明的方法不能被重写
使用final声明的变量变成常量,常量是不可以被修改的。且要把变量名改为大写形式。

2.抽象类
(1)概念:包含一个抽象方法的类就是抽象类。抽象方法:声明而未被实现的方法,抽象方法必须使用abstract关键字声明。eg:public abstract void say();
例如人类中有学生,工人。学生想要好成绩,工人想要好工资,所以我们可以在人类中写一个抽象方法:public abstract void want(); 然后就在人类的学生类和工人类中各自实现就好了

(2)抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法。
(3)定义格式:
	abstract class className{
		属性
		方法
		抽象方法
		}
(4)抽象类不能直接实例化,要通过其子类进行实例化。

3.接口
(1)接口是Java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局变量和公共的抽象方法所组成
(2)接口的格式:
interface interfaceName{
全局常量 (public static final 类型 变量名 赋值)
抽象方法(public abstract void tell() ) public abstract 可以省略掉
}
(3)接口的实现也必须通过子类,使用关键字implements,而且接口是可以多实现的。(对比类的单继承)也要复写抽象方法。
(4)一个子类可以同时继承抽象类和实现接口
class A extends Abs1 implements Inter{}

(5)一个接口不能继承一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承。
(**坑:总结抽象类和接口的相同点和不同的**)

【面向对象的多态性】
1.体现:
方法的重载和重写
对象的多态性:(对比数据类型的转换)
向上转换:程序会自动完成
父类 父类对象 = 子类实例
该对象既是父类的实例也是子类的实例

	//子类实类要先创建
	//调用这个父类的方法时,如果子类对其重写了,就会是重写之后的。	

**向下转换**:强制类型转换【前面一定要先向上转换?】
	子类 子类对象 = (子类)父类实例

对象的多态性感觉挺复杂的,不知道有什么用处呢?

【多态性的使用】

【instanceof关键字】
用其来判断一个对象到底是不是一个类的实例。

【抽象类的应用】
不要去继承一个完成好的类

【接口的应用】
就是一个规则!

interface USB{ //公共的接口
void start();
void stop();//两个抽象方法
} // USB就是标准
class C{
public static void work(USB u){
u.start();
System.out.println(“工作中”);
u.stop();
}
}

class USBdisk implements USB{
public void start(){
System.out.println(“U盘开始工作了”);

}

public void stop(){
	System.o ut.println("U盘停止工作了");	
}

}

class Print implements USB{
public void start(){
System.out.println(“打印机开始工作”);
}
public void stop(){
System.out.println(“打印机停止工作”);
}
}

main函数(){
C.work(new USBDisk());
C.work(new Printer());
}

打印结果:
U盘开始工作
工作中
U盘停止工作
打印机开始工作
工作中
打印机停止工作

【面向对象之泛型】
1.认识泛型(用大写的T来表示)
泛型是在JDK1.5之后增加的新功能。泛型(Generic)
2.泛型可以解决数据类型的安全性问题,他的主要原理,实在类声明的时候通过一个标识表示类中某个属性的类型或者某个方法的返回值及参数类型。(哈?)
3.格式:
访问权限 class 类名称<泛型,泛型…>{
属性
方法
}
4.对象的创建
类名称<具体类型> 对象名称 = new 类名称<具体类型>():

class Point{
private T x;
private T y;
public T getX(){
return x;
}
public void SetX(T x){
this.x = x;
}
//y的不重复写了;

}
main函数(){
Point p = new Point():

}

“后面一直都在玩手机…”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值