暂无权限

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

点击前往
×
问答
张健炜
1楼

这个有点没明白,格式是修饰符+类名+方法名+形参列表+……。

这是什么方法命名啊?有这种格式吗


尚新途

方法名就是方法的名称,随意定义。而且方法格式是修饰符,返回值类型,方法名,形参列表,这里返回值用的是Vehicle类型,

Jeffrey
2楼

当我准备在main方法中new新对象的时候,出现了上述报错,查了一下解决办法,尝试将class Vehicle{}, class House{},class Plane{}这三个类放到 public class TestOverride{}这个类外面的时候,报错就消失了。请问这是什么原理?为什么将这三个内部类放到 TestOverride类外面就没问题了?

尚新途

语法错误,类发生嵌套会报错哦.学到后面会专门讲解内部类的语法哦

佰zhen
3楼

老师,为什么我main方法加了static,我就没办法new 一个Horse的对象出来呢?image.png

尚新途

一个源文件中可以有多个类。但是至多只有一个用public修饰的类

汪汪大队
4楼

image.png

这里所说的重写时子类对应方法的返回值类型要小于父类,Horse是Vehicle的子类,从大小关系上是Vehicle大Horse小吗?那为什么会说子类包含父类的说法(子类可以派生新的属性和方法)? 不是很理解大小是从什么角度定义的。

微信用户
5楼

1.子类重写父类方法时,关于返回值类型,父类是不是可以返回子类的类型?

2.返回值是类类型的,是不是必须返回该类的值,不能返回父类的值?

class person {

    public student getPerson() {
        return new student();
//        return null;
    }
}

class student extends person {

    @Override
    public student getPerson() {
//        return new student();
        return null;
    }
}


尚新途

1.子类重写父类方法时,关于返回值类型,父类是不是可以返回子类的类型?

可以的

2.返回值是类类型的,是不是必须返回该类的值,不能返回父类的值?

那就看这个方法你定义的是要返回什么类型的,是父类的就是父类的,是子类的就是子类的,不能是要返回一个子类的,你写的是父类的。

雨化田
6楼

1672817294426.png

这个类下面的getVehicle方法是构造方法还是普通的方法?如果是普通方法为啥能用类名来定义?

尚新途

这个是普通方法,这里的类名是他的返回值类型,跟void的差不多的

hua
7楼

行参列表是指什么


尚新途

image.png

就是声明一个方法,小括号里面的类型 变量名,这个就是形参列表

清玄
8楼

image.png老师这我是什么情况呀


尚新途

微信找我我给你看一下吧

。。。...
9楼

提问图片.png第5行报错是咋回事?

尚新途

image.png

一个男人
10楼

1、为什么Horse比Vehicle小?难道编译器能分辨“交通工具”  >  “马”,能从语境分析?

1.0.png

尚新途

Horse继承了Vehicle,这里是通过extends识别的,在继承中,被继承的类称为父类,继承该类的类称为子类,二者你可以理解为继承关系,所以Horse比Vehicle小。

尚新途

哦~通过extends确认Horse为Vehicle的子类,子类可以定义Horse,也可以定义为Car,只要和父类名字不一样如:Vehicle

就可以看成比父类小。


这样子理解可以吗?

尚新途

可以这样理解哦

Hongyx
11楼

微信图片_20220706144245.png为什么要写成public Vehicle getVehicle() 而不能写成public void getVehicle ()

尚新途

为什么要写成public Vehicle getVehicle() 而不能写成public void getVehicle ()

因为老师使用这个方法是需要返回一个Vehicle 的对象的,如果不需要返回任何东西就可以写void,自己定义的类也是可以被返回的,这个在后面咱们会大量的使用的,可以慢慢的去接受。

hao
12楼

老师,视频中的子类方法,返回了一个对象,运行时候会出现什么

尚新途

你调用这个方法,就会去给你new一个Horse这个对象。

我的小猪会飞
13楼
package com.java.oop;
//测试方法重写
public class TestOverride {
    public static void main(String args[]){
        Vehicle v = new Vehicle();
        Horse h = new Horse();
    }
static class Vehicle{//父类
    public void run(){
        System.out.println("跑");
    }
    public Vehicle getVehicle(){
        System.out.println("给你交通工具");
        return null;
    }
}
static class Horse extends Vehicle{//子类继承父类拥有父类方法
    public void run(){
        System.out.println("嘚嘚得");
    }
    public Horse getVehicle(){
        return new Horse();
    }
}
}

在创建对象时,报错提示类加static静态修饰符

尚新途

image.png

非静态内部类,可以这样创建对象

我的小猪会飞
14楼
com.java.oopTestOverride {
    (String args[]){
        Vehicle v = Vehicle()}
Vehicle{(){
        System..println()}
    Vehicle (){
        System..println()}
}
Horse Vehicle{(){
        System..println()}
    Horse (){
        Horse()}
}
}

在创建对象时,为啥会提示加静态修饰符static


尚新途

image.png

同学,这份问答结构乱了哦,我看你下一份提交的作业了哦

菜鸟一枚
15楼
class Vehicle{      //交通工具类
    public void run(){
        System.out.println("跑....");
    }

    public Vehicle getVehicle(){
        System.out.println("给你一个交通工具!"
        );
        return null;
    }
}

老师 第一个class 是类的意思 

但下面的这句是方法的意思不(指返回)

public void run(){

还有这个 也是指方法(返回的意思吗)

    public Vehicle getVehicle(){

这里的return null 是指返回什么呢

 return null;


尚新途

public void run()  这个是指方法的声明   public是访问权限   void是返回值   run是方法名  ()是方法的参数列表

public Vehicle getVehicle()            public是访问权限   Vehicle是返回值  getVehicle是方法名  ()是方法的参数列表


 return null;   return是方法体里面具体的返回值,这里返回一个null出去。

尚新途

return null;   return是方法体里面具体的返回值,这里返回一个null出去。


老师为啥这里要返回一个null出去啊

尚新途

因为如果你声明了返回的类型,就必须返回出去这个类型或其子类类型的值,如果不返回就会报错,这个时候也可以返回一个null出去,代表没有什么都没有返回,null可以代表任意类型。这样语法就能通过了。

自我检测(5S)