栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Java学习笔记7

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习笔记7

继承

继承让我们更加容易实现类的扩展。子类是父类的拓展(extends)。

使用extends实现继承

public class Test{
    public static void main(String[] args) {
        Student s = new Student("123",123,"123");
        s.rest();
        s.study();
    }
}
class Person {
    String name;
    int height;
    public void rest(){
        System.out.println("休息一会!");
    }  
}
class Student extends Person {
    String major; 
    public void study(){
        System.out.println("学习");
    }  
    public Student(String name,int height,String major) {
        //天然拥有父类的属性
        this.name = name;
        this.height = height;
        this.major = major;
    }
}

上述的例子中Student类继承了Person类拥有Person的属性。

instanceof运算符

使用instanceof运算符能够判断一个对象是否属于某一个类,是则返回true,否则返回false。左边是判断对象,右边是类。

继承的特点

Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护;

Java中类没有多继承,接口有多继承;

子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法);

若一个类没有调用extends,则默认它的父类是:java.lang.Object

object类

Object类是所有Java类的根基类,也就意味着所有的Java对象都拥有Object类的属性和方法。

to String方法Object类中定义有public String toString()方法,其返回值是 String 类型。toString()方法测试和重写toString()方法

如:```

class Person {
    String name;
    int age;
    @Override
    public String toString() {
        return name+",年龄:"+age;
    }
}
public class Test {
    public static void main(String[] args) {
        Person p=new Person();
        p.age=20;
        p.name="李东";
        System.out.println("info:"+p);
         
        Test t = new Test();
        System.out.println(t);
    }
}

结果:

`info:李东,年龄:20;
cn.sxt.gao2.Test@15db972;
"=="和equals方法

"=="比较的是两者的地址,若地址相同则是同一对象;

Object类中定义有:public boolean equals(Object obj)方法,能够判断“对象内容相等”,Object 的 equals 方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回 true 否则返回 false;

另外equals方法也能进行重写;

super关键字

super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性;

若是构造方法的第一行代码没有显式的调用super(…)或者this(…);那么Java默认都会调用super(),含义是调用父类的无参数构造方法;

public class Main { 
    public static void main(String[] args) {
        new ChildClass().f();
    }
}
class FatherClass {
    public int value;
    public void f(){
        value = 100;
    System.out.println("FatherClass.value="+value);
    }
}
class ChildClass extends FatherClass {
    public int value;
    public void f() {
        super.f();   //调用父类对象的普通方法
        value = 200;
      System.out.println("ChildClass.value="+value);
        System.out.println(value);
        System.out.println(super.value);  //调用父类对象的成员变量
    }
}

结果:

FatherClass.value=100
ChildClass.value=200
200
100

联系前面所学的静态初始化块时,会先上溯到object类,先执行object的静态初始化,再向下执行子类的静态初始化块,直到需要静态初始化的类为止;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号