Test; Testoverride { (String[] args) { Horse horse=Horse(); } Vehicle{ (){ System..println(); } Vehicle (){ System..println(); ; } } Horse Vehicle{ (){ System..println(); } Horse (){ Horse(); } } }
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
同学,这份问答结构乱了哦,我看你下一份提交的作业了哦