Java小白学Java基础_第四章 深入面向对象1_每日更新

1. 方法的覆盖、 方法的重写。

属性有覆盖吗? 没有!!!

子类继承父类的时候,子类可以覆盖父类的方法。

方法名相同,参数列表相同,返回值相同 叫方法的覆盖

  • 返回级别,子类 >= 父类
  1. @Override ; 验证方法是否是覆盖

  2. super.fly(); 当前对象的父类的fly()方法

  3. 属性没有覆盖

public class Bird {

	public void fly() {
		
		System.out.println("飞行");
	}
	
}
public class QQ extends Bird{
	// 重载
	public String fly(int i) {
		System.out.println("太短了,海里游");
		return "";
	}

	@Override // 验证代码是不是override重写,覆盖
	public void fly() {
		System.out.println("override太短了,海里游");
	}
	
}

2. 多态:

2.1 理论的理解

  • 多态: 一种事物多种形态。

逛街, 看到 一个美女, 带了一只 猫。

逛街, 看到 一个美女, 带了一只 宠物。

美女 猫(无毛, 橘猫,。。。)

看到一只狗在撒尿。

狗: 哈士奇,阿拉斯加,萨摩,。。。

人吃肉

肉 (猪牛羊。。)

2.2 代码上的理解:

变量的类型是父类的类型, 真实对象是 子类的对象。 调用的方法是 真实子类覆盖的方法.

编译时的类型,运行时类型

多态发生在继承的方法的覆盖

代码的形式上都是多态

父类  变量 =  new  子类();

public 父类  void aaaAA(父类 参数) {

	return new 子类()
}
aaaAA(new 子类())

多态1;

		Bird b = new QQ();
		b.fly(); // ??? 子类覆盖的方法
		
		QQ q = (QQ)b;
		System.out.println(b.name); // ???属性没有覆盖
		System.out.println(q.name); // ???属性没有覆盖
		

多态2:

// 覆盖的方法— 只关心猫的被撸的行为,不关系具体是哪种猫
cat.played();

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S8r7x5Np-1605748312973)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1603431883845.png)]

package com.etc.lesson06;

public class Cat {
	
	public void played() {
		System.out.println("cat类的 喵");
	}
}
class OraCat extends Cat {

	@Override
	public void played() {
		
		System.out.println("橘色猫的 喵喵喵喵");
	}
}

class NomaoCat extends Cat {

	@Override
	public void played() {
		
		System.out.println("无毛猫的 --无视---");
	}
}

package com.etc.lesson06;

public class BeautyGirl {

	// 依赖关系use a  参数关系
	public void play(Cat cat) {
		System.out.println("美女开炉");
        // 覆盖的方法--- 只关心猫的被撸的行为,不关系具体是哪种猫
		cat.played();
	}
}

package com.etc.lesson06;

public class TestMain3 {

	public static void main(String[] args) {
		// 多态
		Cat c1 = new OraCat();
		BeautyGirl bg = new BeautyGirl();
		
		bg.play(c1);
		
		bg.play(new NomaoCat());
	}
}

定义类覆盖toString

Student stu = new Student(); @overid toString(){return “自定义”}

System.out.println(stu); // obj.toString();

3 两个类的关系

has a/user a

has a: 强关系,关联关系, 属性关系。

use a: 弱关系, 依赖关系, 参数关系。

is a: 继承关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lhBv2SCT-1605748312977)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1603441471115.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vv6urjMH-1605748312981)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1603441500129.png)]

4. instanceof

对象 instanceof 类型 返回boolean值: 对象是否是 类型的类

	// 防止类型转换异常
	if (wuqi instanceof JiuChiDingPaf) {
		JiuChiDingPa jcdp = (JiuChiDingPa) wuqi;
	} else if (wuqi instanceof DingHaiShenzhen) {
		DingHaiShenzhen dhsz = (DingHaiShenzhen) wuqi;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值