public Vehicle getVehicle(){
22 System.out.println("给你一个交通工具!");
23 return null;
24 }
这个有点没明白,格式是修饰符+类名+方法名+形参列表+……。
这是什么方法命名啊?有这种格式吗
方法名就是方法的名称,随意定义。而且方法格式是修饰符,返回值类型,方法名,形参列表,这里返回值用的是Vehicle类型,
当我准备在main方法中new新对象的时候,出现了上述报错,查了一下解决办法,尝试将class Vehicle{}, class House{},class Plane{}这三个类放到 public class TestOverride{}这个类外面的时候,报错就消失了。请问这是什么原理?为什么将这三个内部类放到 TestOverride类外面就没问题了?
语法错误,类发生嵌套会报错哦.学到后面会专门讲解内部类的语法哦
老师,为什么我main方法加了static,我就没办法new 一个Horse的对象出来呢?
一个源文件中可以有多个类。但是至多只有一个用public修饰的类
这里所说的重写时子类对应方法的返回值类型要小于父类,Horse是Vehicle的子类,从大小关系上是Vehicle大Horse小吗?那为什么会说子类包含父类的说法(子类可以派生新的属性和方法)? 不是很理解大小是从什么角度定义的。
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.返回值是类类型的,是不是必须返回该类的值,不能返回父类的值?
那就看这个方法你定义的是要返回什么类型的,是父类的就是父类的,是子类的就是子类的,不能是要返回一个子类的,你写的是父类的。
这个类下面的getVehicle方法是构造方法还是普通的方法?如果是普通方法为啥能用类名来定义?
这个是普通方法,这里的类名是他的返回值类型,跟void的差不多的
行参列表是指什么
就是声明一个方法,小括号里面的类型 变量名,这个就是形参列表
老师这我是什么情况呀
微信找我我给你看一下吧
第5行报错是咋回事?
1、为什么Horse比Vehicle小?难道编译器能分辨“交通工具” > “马”,能从语境分析?
Horse继承了Vehicle,这里是通过extends识别的,在继承中,被继承的类称为父类,继承该类的类称为子类,二者你可以理解为继承关系,所以Horse比Vehicle小。
哦~通过extends确认Horse为Vehicle的子类,子类可以定义Horse,也可以定义为Car,只要和父类名字不一样如:Vehicle
就可以看成比父类小。
这样子理解可以吗?
可以这样理解哦
为什么要写成public Vehicle getVehicle() 而不能写成public void getVehicle ()
为什么要写成public Vehicle getVehicle() 而不能写成public void getVehicle ()
因为老师使用这个方法是需要返回一个Vehicle 的对象的,如果不需要返回任何东西就可以写void,自己定义的类也是可以被返回的,这个在后面咱们会大量的使用的,可以慢慢的去接受。
public Horse getVehicle() {
return new Horse();
老师,视频中的子类方法,返回了一个对象,运行时候会出现什么
你调用这个方法,就会去给你new一个Horse这个对象。
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静态修饰符
非静态内部类,可以这样创建对象
com.java.oopTestOverride { (String args[]){ Vehicle v = Vehicle()} Vehicle{(){ System..println()} Vehicle (){ System..println()} } Horse Vehicle{(){ System..println()} Horse (){ Horse()} } }
在创建对象时,为啥会提示加静态修饰符static
同学,这份问答结构乱了哦,我看你下一份提交的作业了哦
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可以代表任意类型。这样语法就能通过了。