public class DogTest {
public static void main(String[] args) {
Dog dog = new Dog("Mimi ", "3");
dogsetNickname("Baby");
Systemoutprintln(dogname + "is" + dogage + " years old");
Systemoutprintln("It’s nickname is " + doggetNickname());
Animal animal = new Animal("Tom ", "3");
Systemoutprintln(animalname + animalrun());
}
}
/
/
package test;
/
@author lilin
/
public class Dog extends Animal {
public Dog(String name, String age) {
super(name, age);
}
private String nickname;
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
thisnickname = nickname;
}
public String run() {
Systemoutprintln("run by four feet");
return null;
}
}
/
/
package test;
/
@author lilin
/
public class Animal {
protected String name;
protected String age;
public Animal(String name, String age) {
thisname = name;
thisage = age;
}
public String run() {
return "can run";
}
}
子类无条件调用父类的无参构造函数,实例:
父类:
package comtest;
public class TestFatherClass {
private String name="abc";
TestFatherClass(){
Systemoutprintln("1、这是父类的无参构造函数");
}
TestFatherClass(String a){
Systemoutprintln("2、这是父类的有参构造函数");
}
}
子类:
package comtest;
public class TestChildClass extends TestFatherClass{
TestChildClass(){
Systemoutprintln("3、这是子类的无参构造函数");
}
TestChildClass(String str){
Systemoutprintln("4、这是子类的有参构造函数");
}
public static void main(String[] args) {
Systemoutprintln("实例化对象时:(无参)");
TestChildClass test = new TestChildClass();
Systemoutprintln("实例化对象时:(有参)");
TestChildClass test2 = new TestChildClass("adad");
}
}
输出结果:
当然有
father a = new son 是属于父类引用指向了子类对象,java把这种把子类对象赋给父类引用变量称之为向上转型
区别:给你举个例子
比如,father类有一个eat()方法,son类继承了father类,也就拥有了eat()方法,并同时定义了自己的方法drink()如果是father a = new son ,则你只能调用属于father 的方法eat(),而不能调用son的方法drink()也就是说虽然变量a 指向了对象 son ,但由于它编译时的类型是father,所以它不能调用属于son的方法,尽管变量a运行时的类型是son
而son a = new son中的a则可以调用属于它自己的方法drink()和它继承的方法eat(),因为a 这个引用变量编译时的类型和运行时的类型都是son
再说的大众些,father a = new son 是以父亲的角度看儿子,由于父子之间有继承关系,你是创造了一个儿子对象并把它当父亲用,所以你只能调用属于父亲的方法,而son a = new son就是你是创造了一个儿子对象并把它当儿子,所以你可以调用属于儿子的方法和他所继承父亲的方法
以后你理解了多态以后,就好理解这个问题了
public class Salary {
/
@param args
/
public static void main(String[] args) {
//用继承,重写方法,都是调用的wages()方法
Person personManager = new Manager();
Systemoutprintln("这个人的工资是:"+personManagerwages());
Person personEngineer = new Engineer();
Systemoutprintln("这个人的工资是:"+personEngineerwages());
Person personWorker = new Worker();
Systemoutprintln("这个人的工资是:"+personWorkerwages());
}
}
//人类
class Person {
public String wages(){
return "";
}
}
//经理类
class Manager extends Person{
public String wages(){
return "5000/月";
}
}
//工程师类
class Engineer extends Person{
public String wages(){
return "3000/月";
}
}
//工人类
class Worker extends Person{
public String wages(){
return "2000/月";
}
}
知道类、继承,写属性,很容易的事情了。
class Father{
//自有属性
}
class Son extends Father{
///扩展属性
}
class Student extends Person{
private String studentID;
public Student(){
super();
}
public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
thisstudentID = studentID;
}
}
class Person{
protected String name;
protected int age;
protected String phonenumber;
public int getAge() {
return age;
}
public void setAge(int age) {
thisage = age;
}
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public String getPhonenumber() {
return phonenumber;
}
public void setPhonenumber(String phonenumber) {
thisphonenumber = phonenumber;
}
}
以上就是关于java编程:(二)类的继承全部的内容,包括:java编程:(二)类的继承、java,中的子类继承父类,子类如何调用父类的构造函数举一个简单的例子加注释说明、java中的继承等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)