java小记(八)

1、比较两个字符串的值是否相等,不能使用==,使用equals(),例如:

	a.equals(b);

2、继承抽象类的具体类必须实现所有抽象方法。

3、抽象类的规则:
(1)抽象类可以没有抽象方法,有抽象方法的类必须是抽象类。
(2)非抽象类继承抽象类必须实现所有抽象方法。
(3)抽象类可以继承抽象类,可以不实现父类的抽象方法。
(4)抽象类可以有方法实现和属性。
(5)抽象类不能被实例化。
(6)抽象类不能声明为final。
(7)抽象类可以有构造方法。

4、接口的定义格式:

interface接口名称{
		全局常量;
		抽象方法;//只能定义全局常量和抽象方法,JDK1.8后可以定义默认的实现方法
}
//在JDK1.8后新特性,可以被所有实现类继承
interface Demo1{
	public default void print() {
		System.out.println("eat");
	}
}

接口体中包含常量的声明(没有变量)和抽象方法两部分。接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量的访问权限一定都是public(允许省略public、final修饰符)、所有的抽象方法的访问权限一定都是public(允许省略public、abstract修饰符)。

5、接口使用规则:
(1)接口之间可以多继承。(类只能单继承)
(2)具体类实现接口必须实现接口的所有方法。
(3)抽象类实现接口可以不实现接口的方法。
(4)接口不能有构造方法。
(5)接口不能被实例化。

6、多态性
对象的多态性:
对象多态性是从继承关系中的多个类而来,
向上转型:将子类实例转化为父类引用
格式:父类 父类对象 = 子类实例;(自动转换)
以基本数据类型操作为例:int i = 'a';
(因为char的容量比int小,所以可以自动完成)

向下转型:将父类实例转化为子类实例
格式:子类 子类对象 = (子类)父类实例;(强制转换)
以基本数据类型操作为例:char c = (char)97;
因为int是4个字节,char是2个字节,前者大,所以需要强制转换。

class Demo2{
	public static void main(String[] args) {
		//用父类的引用指向子类对象(用大的类型来表示小的类型),向上转型(自动转换)
		Chicken hc = new HomeChicken("小鸡");
		
		Chicken yc = new YeChicken("大鸡");
		
		eat(hc);
		eat(yc);
		
		Chicken jjc = new JianJiaoChicken("尖叫鸡");
		eat(jjc);
	}
	//抽象(粒度)面向抽象编程(面向接口编程)
	public static void eat(Chicken c) {//在实际开发中尽量使用父类,因为它的可变性(适应性)更强,任何子类传进来它都能接受,更利于扩展
		System.out.println("鸡吃饭");
		c.eat();
		//c.song();这样编译会出错,要下面那样才行
		JianJiaoChicken jjc = (JianJiaoChicken)c;//大的类型转换为小的类型,强制转换(向下转换)
		jjc.song();
	}
}
//鸡
abstract class Chicken{
	private String name;
	public Chicken() {}
	public Chicken(String name) {
		this.name = name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public abstract void eat();
}
//家鸡
class HomeChicken extends Chicken{
	public HomeChicken(String name) {
		super(name);
	}
	public void eat() {
		System.out.println(this.getName()+",我爱吃米");
	}
}
//野鸡
class YeChicken extends Chicken{
	public YeChicken(String name) {
		super(name);
	}
	public void eat() {
		System.out.println(this.getName()+",我爱吃虫子");
	}
}
class JianJiaoChicken extends Chicken{
	public JianJiaoChicken(String name) {
		super(name);
	}
	public void eat() {
		System.out.println(this.getName()+",我不吃东西");
	}
	public void song() {
		System.out.println("唧唧复唧唧,我是尖叫鸡");
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值