暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
落辰
1楼


1、在创建Student的对象时,也会调用父类Person的构造方法,但是为什么是同一个对象呢?父类的对象去哪了呢?总不能说是父类的实例化就是子类吧?因为子类里面含有许多父类不具有的方法属性啊

图片.png

2、然后我对创建对象的部分进行了改动

图片.png

运行结果

图片.png

既然Student可以是Person的对象(如第二行),那为什么Person不能是Student的对象呢?我这样理解对吗?可以说Student是Person的一种子分类(或者是对象),但是不能说Person是Student的一种子分类(对象)

3、最重要的一点,关于Student是Person的对象,在底层是如何表示的呢?是建立一条引用Object->Person->Student用来表示对象的父类对象的吗?

尚新途

Person是Student的父类,向下转型要强制转换哦

嘎嘎嘎?
2楼

1.如图
2.this的意义是什么啊?
1677901837777.png

尚新途

对的,你说的没问题。构造方法的定义就是和类名一致,无返回值的方法,这里的无返回值并不是指void.

微信用户
3楼
package opp.src.com.itbaizhan.oop;

public class TestExtends {
    public static void main(String[] args) {
    student s=new student("glp",18,"java");
        s.rest();
        s.study();
    }
}
class person{
    int age;
    String name;
    public void rest(){
        System.out.println("休息一下");
    }
}
class student extends person{
    String major;
    public void study(){
        System.out.println("学习吧");
    }
    public student(String name,int age,String major) {
        this.name = name;
        this.age = age;
        this.major = major;
    }
        }

image.png老师,我的代码出了点问题


尚新途

微信找我给你看一下吧

sand
4楼

屏幕截图 2023-01-17 184340.png老师请问为什么会报错啊

尚新途

person的p是小写的

sand
5楼
class Student extends person{
    String major;

    public void study(){
        System.out.println("学习");
        rest();
        System.out.println(this.name);
    }
}

这里的this.name是指在这个子类中创建的名字吗

尚新途

这个属性是继承父类的,子类也是可以去使用的,也可以通过子类去给name去赋值,并获取到你所赋到的值

Student a=new Student();
a.name="aa";
a.study();


淇瑞
6楼

[6GF}R[U[AM_FSOS@VI`R9F.png如何将红框部分的内容输出出来

尚新途

image.png

戴墨镜的修勾
7楼

image.png

为什么在父类中定义了构造器,子类再定义就报错

尚新途

因为需要定义无参构造,你子类继承了父类,那么子类的构造方法一定是调用父类的,现在有了有参构造,想要使用无参构造,就必须把无参构造声明出来。

image.png

。。。...
8楼

2提问照片.jpg这个this指的是哪个对象?好像整个代码里面没有创建对象

尚新途

不用了老师,我知道了

尚新途

姜方荣
9楼
public class Test{
    public static void main(String[ ] args) {
        Student s = new Student("高淇",176,"Java");
        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("在尚学堂,学习Java");
    }   
    public Student(String name,int height,String major) {
        //天然拥有父类的属性
        this.name = name;
        this.height = height;
        this.major = major;
    }
}

为什么main方法中可以调用student类中的构造方法?

尚新途

因为构造方法是public修饰的,我们在外部创建对象的时候,会默认调用对应的构造方法进行初始化对象。

一个男人
10楼

老师你好,我想把Person父类中的rest()方法直接在main()中运行,代码该怎么写?7.png

尚新途
Person p = new Person();
p.rest()


Hongyx
11楼

这个括号为什么不能括到整个程序的最后一行微信图片_20220706141136.png

尚新途

image.png

Hongyx
12楼

为什么有定义类前面加class,有时候加public,有什么又加public class


尚新途

image.png

public修饰的类只能有一个,如果定义其他类,不能加public,被public修饰的这个类必须和文件名相同

刘佳琦
13楼

(UVR%V[Z`UG9D_TH([%S}[S.png老师,我的这个public Student那里为什么会报错?

尚新途

image.png

Fintik
14楼
这个rest的方法可以不放在里面吗,放在外面可以调用吗

WX20220428-211823@2x.png

尚新途

放在外面?同学你这个外面,是指哪个外面?

方法可以放在什么位置呢:可以在方法体内调用其他方法,方法是不可以脱离成单独的位置放的,不然也没意义 是吧


我们最常见的是不就是 创建了一个方法 然后在 main方法里调用 是吧

Fintik
15楼
为什么在命名类之前要用class
尚新途

class 类名{ } 这是java的语法规则哦,class是类的含义,java的程序也是基于很多很多类来构成的

自我检测(5S)