java中子类继承

[[email protected] java]# vim Ostrich.java //注意文件名必须是这个,因为下面代码中只有Ostrich是public修饰符。我们要明白public的含义

class Bird
{
        public void Fly()
        {
                System.out.println("I am bird I can fly");
        }
}
public class Ostrich extends Bird
{
        public void Fly()
        {
                System.out.println("I am bird But I can not fly");
        }
        public static void main(String[] args)
        {
                Ostrich f = new Ostrich();//死
                f.Fly();
        }
}

子类继承了父类,子类就拥有了父类的所有的方法,可以直接调用,可以修改,虽然,构造器也是一种特殊的方法,但是,子类不能继承到父类的构造器,这是java的规定。

上面这个例子就是子类继父类,而且还可以重写父类的方法!只要方法名字一定一样!

class Bird
{
        public void Fly()
        {
                System.out.println("I am bird I can fly");
        }
}
public class Ostrich extends Bird
{
        public void Fly()
        {
                System.out.println("I am bird But I can not fly");
        }
        public void callOverrideMethod()
        {
                super.fly();//使用super限定,去调用Bird类中被覆盖的方法,这样Ostrih类就可以去访问被自己覆盖的父类的方法
        }
        public static void main(String[] args)
        {
                Ostrich f = new Ostrich();
                f.Fly();
        }
}

当然我们怎么在子类中继承父类的成员呢?就像Feild一样,可是成员又包括类成员和对成员,就像类Feild和对象Feild,我们该怎么在子类中调用这些从父类中继承的成员呢?

正确:

子类继承了父类后,想调用父类,调用父类中的类Feild话需要使用 父类名.成员名

class Bird
{
        static String name;  //这是一个类Feild,子类继承了它
        public void Fly()
        {
                System.out.println("I am bird I can fly");
        }
}
public class Ostrich extends Bird
{
        public void Fly()
        {
                System.out.println("I am bird But I can not fly");
        }
        public static void main(String[] args)
        {
                Ostrich f = new Ostrich();
                f.Fly();
                Bird.name = "maque";//子类调用时必须使用Bird不能使用super,因为这是个static修饰的,属于类本身
                System.out.println(Bird.name);
        }
}

非static修饰的

class Bird
{
        String name;
        public void Fly()
        {
                System.out.println("I am bird I can fly");
        }
}
public class Ostrich extends Bird
{
        public void Fly()
        {
                System.out.println("I am bird But I can not fly");
        }
        public static void main(String[] args)
        {
                Ostrich f = new Ostrich();
                f.Fly();
                super.name = "maque";
                System.out.println(Bird.name);
        }
}

java中子类继承,布布扣,bubuko.com

时间: 2024-12-02 23:00:23

java中子类继承的相关文章

java中子类继承父类程序执行顺序问题

Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public class FatherTest { private String name; FatherTest(){ System.out.println("--父类的无参构造函数--"); } FatherTest(String name){ this.name=name; System.out

Java中子类继承了父类的私有属性及方法吗?

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法

Java中子类继承父类关于构造方法的问题:there is no default constructor available in

there is no default constructor available in 原因 这个错误是由于继承引起的,原因是子类里写了并且使用了无参的构造方法(不写默认就是无参的构造方法),但是它的父类中却至少有一个是没有“无参构造方法”的,就会出现这个问题 总结 一个类如果显式的定义了带参构造函数,那么默认无参构造函数自动失效 一个类只要有父类,那么在它实例化的时候,一定是从顶级的父类开始创建.对于Java来说要一直追述到Object 祖宗(Object)-> 曾爷爷 -> 爷爷 -&g

java中子类继承父类时是否继承构造函数

来源:http://www.cnblogs.com/sunnychuh/archive/2011/09/09/2172131.html --------------------- java继承中对构造函数是不继承的,只是调用(隐式或显式). 以下是例子: public class FatherClass { public FatherClass() {       System.out.println(100); } public FatherClass(int age) {      Syst

转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性

原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法. 它们只能访问static数据. 它们不能以任何方式引用this 或super. 无论是static修饰的变量,还是static修饰的方法,我们都知道他们是属于类本身的,不是属于某一个对象的,当声明一个对象时,并不产生sta

JAVA中的继承

1.什么是继承 基于一个已存在的类,创建一个新的类.已存在的类即父类,新的类即子类,继承就是子类继承并拥有父类的属性和方法,同时,子类还有拥有父类所不具有的属性和方法. 父类,也称为基类.超类(superclass):子类,也称为派生类. 2.JAVA中"继承"的特点 JAVA中一个类只能继承一个父类.不像C++等语言那样,可以继承多个类.这也是JAVA比较容易学的一方面 只能继承父类中非private成员属性和方法,private是父类所特有的不能继承 3.JAVA中的"继

Java中子类和父类的构造函数?

这篇文章总结了关于Java构造的常见??问题. 1)为什么创建一个子类对象要也需要调用父类的构造函数? class Super { String s; public Super(){ System.out.println("Super"); } } public class Sub extends Super { public Sub(){ System.out.println("Sub"); } public static void main(String[] a

Java中的继承、封装、多态的理解

Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(有的也称其为基类.超类),父类和子类的关系,是一种一般和特殊的关系.就像是水果和苹果的关系,苹果继承了水果,苹果是水果的子类,水果是苹果的父类,则苹果是一种特殊的水果. 3.Java使用extends作为继承的关键字,extends关键字在

java中子类与基类变量间的赋值

Java中子类与基类变量间的赋值 子类对象可以直接赋给基类变量. 基类对象要赋给子类对象变量,必须执行类型转换, 其语法是: 子类对象变量=(子类名)基类对象名; 也不能乱转换.如果类型转换失败Java会抛出以下这种异常: ClassCastException package yanzheng; class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public