JAVA零基础小白自学日志——第十六天


今日提要:类的继承

1.Java类继承的特性

为什么有继承啊,当然是因为有爹有儿啊!这里的继承不是为了遗产,这里的继承更像是DNA遗传,就是父类(也叫超类)有的特性,子类就会天然有,爹有鼻窦炎,儿也有。。。。。

[1].减少代码重复

基于上面的规则,那么如果你是个大夫,你就对那个有鼻窦炎的爹的所有的儿子做诊断的时候,默认都有鼻窦炎,那么就省得一个一个挨个判断有没有鼻窦炎了,省去了各种重复的检查了,嗯嗯,这就是从子类中抽象出来的超类,可以减少代码重复

[2].扩展

那你就又问了,都一样了,还要分爹和儿干什么,儿有儿的特点,儿不光有鼻窦炎,还有哮喘呢,子类(派生类)是对父类(超类或者基类)的扩展。。。。。。;

[3].单继承

这个爹可不是只有一个儿子,大多数时候都是一群一群的,不过儿子只能有一个直接的爹,又一个特性,Java只有单继承(一个爹多个儿子,一个儿子不能有多个爹,多个爹,下班了,爹陆陆续续下班了。。。。。);另外说一句,Java里面有个老祖级的类Object,所有类都继承于它呢,真正的Java牌位最顶头的那个;

2.Object类

Java所有类的老祖宗,无需指明继承关系,Java里所有的类都继承了Object的方法;
常用方法:

[1].toString()

用于返回对象字符串表现形式,这句话让我听得想啐人,不过就是返回一个“类名@对象的调用地址”么?

package Com.Test03;
.
.
.
TestOne t = new TestOne();
System.out.println(t.toString());
.
.
.
运行结果:Com.Test03.TestOne@6d06d69c

各种教学里面都说,这个方法需要复写,也就是重新定义,但意义何在?学习到这里的我,还想不明白

[2].equals()

这个方法在前面的小贴士里面有介绍,现在来个更精准的解释,该方法用于对比两个对象是否相同,如果对象没有被重写过,那么equals()等同于“==”,此方法不能运用于基本类型比较

可以用于:
boolean s;
Myclass s1 = new Myclass();
Myclass s2 = new Mycalss();
s = s1.equals(s2)

boolean s;
String s1,s2;
s1 = “hello”;
s2 = “olleh”;
s = s1.equals(s2);

不能用于:
boolean s;
int a,b;
a = 10;
b = 10;
s = a.equals(b);

[3].hashCode()

返回对象的存储地址,这个没啥解释的,意思就是这意思;

3.对象转型

[1].向上转型

把儿子当爹用

首先声明以下只是为了看明白,但不是合法的代码

public class{
    public(){
        ..........
    }
}
public class 大儿子 extends{
    public(){
        ...........
    }
}
public class 父与子{
    public static void main(String[] args){
        爹 s1 = new 大儿子();
        s1.();//这个父类的方法是可以调用的
        //s1.跑();这个类不能调用了
    }    
}

[2].向下转型

把爹当儿子用

首先声明以下只是为了看明白,但不是合法的代码

public class{
    public(){
        ..........
    }
}
public class 大儿子 extends{
    public(){
        ...........
    }
}
public class 父与子{
    public static void main(String[] args){
        爹 s2 = new 大儿子();
        //s2.跑();这个是会报错的
        大儿子 s1 = (大儿子)s2;
        s1.();
    }    
}

看着有点眼熟,那就对了,还记得int s1 = (int) s2;这个表达式么?强制类型转换啊,大类型转换到小类型那个。

下面这样是不可以的,切记,因为这个用IDE书写的时候是不会报错的,只有编译的时候会报错:

.........
        爹 s2 = new();        
        大儿子 s1 = (大儿子)s2;
        s1.();
..........        
  • 40
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值