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

Java笔记(五)

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

Java笔记(五)

继承

一个人的属性有名字,身高。学生也是人,但学生拥有其特殊的属性,如专业。当定义学生类时,名字,身高等人拥有的属性学生都需要写上去,这时候会重复很多代码,使用继承即可将Person类的属性与方法继承给Student类,此时Student类只要写自己特有的代码即可。

子类继承父类的属性与方法,不继承构造器,此类方法可以避免代码的重复,使得代码更加简洁,关系更清晰。(子类的名字 extends 父类的名字即可实现继承功能)

如下,student类是Person的子类。

class Person{
   String name;
   int height;
   public void rest(){
          System.out.println("休息一会儿!");
   }
}


class student extends Person{
     String major;
     public void study(){
        System.out.println("正在学习Java");
     }
继承的使用要点

父类也称作超类,基类。子类也可以叫做派生类等。Java中只有单继承(一个子类只能有一个父类,但是一个父类可以有许多子类),没有像c++那样的多继承、多继承会引起混乱,使得继承链过于复杂,系统难以维护。Java中类没有多继承,接口有多继承。子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。 组合

组合也能实现继承所能实现的功能。组合的核心是将父类对象作为子类的属性,子类通过调用这个属性来获得父类的属性和方法。(如果A类具有B类的所有属性与方法,那么就在A类里面new一个B类的对象,则即可用A类的对象调用B类的对象,即可调用B类的属性。)

pubic class Test{
   public static void main(Srting[] args){
      Student s = new Student("朴彩英",170,"Java");
      s.person.rest();
      s.study();
   }
}


class Person{
   String name;
   int height;
   public void rest(){
      System.out.println("休息一会儿");
   }
}

class Student {
   Person person = new Person();//实现了Student类与Person类的组合
   String major;
     public Student(String name,int heignt,String major){
        this.person.name=name;
        this.person.height=height;
        this.major=major;
     }
}
方法的重写

方法重写的前提是必须存在继承关系,在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。重写的方法,可以用不同的对象来区分调用的是哪一个方法。

注意:

    父类的成员方法只能被它的子类重写。 声明为 final 的方法不能被重写。 声明为 static 的方法不能被重写,但是能够再次声明。构造方法不能被重写。子类和父类在同一个包中时,子类可以重写父类的所有方法,除了声明为 private 和 final 的方法。子类和父类不在同一个包中时,子类只能重写父类的声明为 public 和 protected 的非 final 方法。

方法的重写需要满足以下三个条件

    “==”:方法名,形参名相同。“<=”:返回值类型和声明异常类型,子类小于父类。“>=”:访问权限,子类大于等于父类。(访问权限由小到大:private——>default——>protected——>public)

如下代码,在父类 Animal 中定义 getInfo() 方法,并在子类 Cat 中重写该方法.

public class Animal {
    public String name; // 名字
    public int age; // 年龄

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getInfo() {
        return "我叫" + name + ",今年" + age + "岁了。";
    }
}



public class Cat extends Animal {
    private String hobby;

    public Cat(String name, int age, String hobby) {
        super(name, age);
        this.hobby = hobby;
    }

    public String getInfo() {
        return "喵!大家好!我叫" + this.name + ",我今年" + this.age + "岁了,我爱吃" + hobby + "。";
    }

}

final关键字

final关键字的作用

    修饰变量:被它修饰的变量不可改变,一旦赋了初值,就不能被重新赋值,                             如:final int MAX-SPEED=120;修饰方法:该方法不可被子类重写,但是可以被重载!                                                             如:public final void study{}修饰类:修饰的类不能被继承,比如:Math,String等。                                                     如:final class A{}
instanceof运算符

instance是二元运算符,左边是对象,右边是类,当对象是右面类或子类所创建的对象时,返回值为true,否则返回false。

public class Test{
     public static void main(String[] args){
       Student s = new Student("朴彩英",170,"java");//此处假设Student为Person的子类。
       System.out.println(s instanceof Person);
       System.out.println(s instanceof Student);
     }
}

 他们的返回值都为true

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

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

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