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

面向对象进阶7---继承

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

面向对象进阶7---继承

继承 什么是继承

案例分析



小结

代码说明
package StaticDemo2;

public class people {
    private String name;
    private int age;

    public people() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package StaticDemo2;

public class Teacher extends people{

    // 独有的功能
    public void teacher(){
        System.out.println("老师教书育人。");
    }
}

package StaticDemo2;

public class Student extends people{

    public void student(){
        System.out.println("学生再学习");
    }



}

package StaticDemo2;

public class test {
    public static void main(String[] args) {
        //  创建子类对象看一下是否可以使用父类的属性和行为
        Student s = new Student();
        s.setName("小明");
        s.setAge(25);

        System.out.println(s.getName());
    }
}

继承设计规范

设计案例


代码演示

package StaticDemo3;

public class student207 extends people207 {
    private String className;

    public void student(){
        System.out.println(getClassName()+"的"+getName()+"学生再快乐的学习");
    }

    public void writerinfo(){
        System.out.println("填写课程评价");
    }



    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

package StaticDemo3;

public class teacher207 extends people207 {

    private String part;

    // 独有属性
    public void teacher(){
        System.out.println(getName()+"老师再教书");
    }


    public String getPart() {
        return part;
    }

    public void setPart(String part) {
        this.part = part;
    }
}

package StaticDemo3;

public class people207 {
    private String name;
    private int age;

    // 共同行为
    public void queryCourse(){
        System.out.println(name+"开始查看课表信息");
    }

    public people207() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package StaticDemo3;

public class test207 {
    public static void main(String[] args) {

        // 创建子对象,可以使用父类的属性和行为
        student207 s = new student207();

        s.setAge(25);
        s.setName("小明");
        s.setClassName("通信工程");

        System.out.println(s.getName());
        System.out.println(s.getAge());

        s.student();
    }
}

运行结果

程序运行原理







小结

继承的特点







小结、

继承后成员变量成员方法的访问特点 就近原则

代码说明
package StaticDemo3;

public class extendsdemo{
    public static void main(String[] args) {
        wolf w = new wolf();
        System.out.println(w.name);  // 子类的

    }
}

class animal{
    public String name="父类动物";
}

class wolf extends animal{
    public String name="子类动物";
}

结果演示

this与super访问

关键字的就近原则

package StaticDemo3;

public class extendsdemo{
    public static void main(String[] args) {
        wolf w = new wolf();
        System.out.println(w.name);  // 子类的
        w.showname();


    }
}

class animal{
    public String name="父类动物";
}

class wolf extends animal{
    public String name="子类动物";

    public void showname(){
        String name = "局部名称";
        System.out.println(this.name); // 子类名称
        System.out.println(super.name); // 父类名称
    }
}

结果演示

方法的就近原则

package StaticDemo3;

public class extenddemo2 {
    public static void main(String[] args) {
        son s = new son();
        s.run();
        System.out.println("==============================");
        s.go();
    }
}

class people{
    public void run(){
        System.out.println("父类run方法");

    }
}

class son extends people{
    public void run(){
        System.out.println("子类的run方法");
    }

    public void go(){
        run();// 子类
        this.run();//子类
        super.run();//父类
    }
}

小结

方法重写 什么是方法重写

代码演示

父类

package StaticDemo4;

public class phone {
    public void call(){
        System.out.println("打电话开始");
    }

    public void sendmessage(){
        System.out.println("发送短信");
    }
}

子类

package StaticDemo4;

public class newphone extends phone {
    
    public void call(){
        // 声明继承父类方法
        super.call();
        System.out.println("支持视频通话");
    }

    public void sendmessage(){
        super.sendmessage();
        System.out.println("可以发送彩信和图片");
    }
}

测试

package StaticDemo4;

public class test {
    public static void main(String[] args) {
        newphone n = new newphone();
        n.call();
        n.sendmessage();

    }
}

运行结果

重写注意事项


案例分析----私有方法不能重写

案例分析—重写的优先级


子类无法重写父类的静态方法

小结

子类构造器的特点 子类构造器继承父类后的构造器特点

程序演示

父类

package StaticDemo4;

public class Animals {
    public Animals(){
        System.out.println("=======父类Animals无参数构造器被执行======");
    }
}

子类

package StaticDemo4;

public class Cat extends Animals {
    public Cat(){
        System.out.println("====子类Cat无参数构造器被触发执行=====");
    }
}

测试

package StaticDemo4;

public class test2 {
    public static void main(String[] args) {
        Cat c = new Cat();
    }
}

结果

程序改进我们来观察有参数构造器是否和无参数构造器一样,我们不改变父类构造器,仅改变子类构造添加一个有参数构造器功能,其他功能不变

package StaticDemo4;

public class Cat extends Animals {
    public Cat(){
        System.out.println("====子类Cat无参数构造器被触发执行=====");
    }

    public Cat(String n){
        System.out.println("=====子类有参数构造器被触发执行=========");
    }
}

package StaticDemo4;

public class test2 {
    public static void main(String[] args) {
        Cat c = new Cat();
        System.out.println("===================");
        Cat c1 = new Cat("小叮当");
    }
}

小结

子类构造器访问父类有参数构造器 Super调用

代码演示

父类

package StaticDemo5;

public class People {
    private String name;
    private int age;

    public People() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

子类

package StaticDemo5;

public class Student extends People{

    private String calssName;
    // 先整一个无参数构造器
    public Student(){

    }


    public Student(String name,int age,String calssName){
        // 一定要访问父类的无参数构造器
        super(name,age);
        this.calssName = calssName;
    }


    public String getCalssName() {
        return calssName;
    }

    public void setCalssName(String calssName) {
        this.calssName = calssName;
    }
}

测试类

package StaticDemo5;

public class test {
    public static void main(String[] args) {
        Student s = new Student("张三",25,"通信工程");
        System.out.println(s.getCalssName());
        System.out.println(s.getAge());
        System.out.println(s.getName());

    }
}

运行结果

小结

this,super使用小结 this&super详情

案例演示


主代码

package StaticDemo6;

public class Student {
    private String name;
    private String schoolName;

    public Student() {
    }

    // this调用本类构造器,这里并没有用继承
    public Student(String name){
        this(name,"学校未知");
    }

    public Student(String name, String schoolName) {
        this.name = name;
        this.schoolName = schoolName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }
}

测试

package StaticDemo6;

public class Test {
    public static void main(String[] args) {
        Student s = new Student("乔巴","java培训");
        System.out.println(s.getName());
        System.out.println(s.getSchoolName());

        System.out.println("======================================");

        Student s1 = new Student("小王");
        System.out.println(s1.getName());
        System.out.println(s1.getSchoolName());
    }
}

运行结果

参考

黑马程序员

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

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

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