面向对象--继承和重写

1、什么继承?继承有什么优点?
继承是从已有的类中派生出新的类,新的类能吸收已有的的数据属性和行为。
优点:1.代码的重用性。2.父类的属性方法可用于子类3.设计应用程序变得简单4.
子类可以扩展父类的属性和方法。

2、继承使用什么关键字?
extends关键字

3、一个类可以同时继承多个类吗?所有类的父类是什么?
在Java中一个类只能有一个父类,一个类不能同时继承两个父类
所以的类的根类是object

4、什么是重写?用什么方法可以强制检测当前方法是否重写父类方法?
方法的重写发生在父类和子类之间,子类的方法方法名和父类相同,参数列表相同,返回类型相同
当调用方法时,优先调用子类重新的方法,如果子类没有重写父类的方法,那么就从父类中继承方法。
@Object注解可以用于修饰方法,表示强行检测该方法是否重新父类的方法,如果没有重新则报错。

5、构造方法能继承吗?子类继承父类,子类构造方法第一句应该如何书写?
能继承,super(参数);

6、final的用法?String可以继承吗?为什么?
final关键字,可以修饰类方法和变量
修饰类,表示该方法不能被子类继承
修饰变量表示该变量不能被改变
修饰方法表示该方法不能被改变
引用类型的变量如果声明了final表示该变量不能指向别的对象,但是该变量所指向的对象的属性可以改变。
string 不能被继承,string有final修饰符,而final修饰的类不能被继承,实现细节不能被改变。

7、下列方法中哪些重写了父类方法?
class A{
public int test(String s){
System.out.println("aaa");
}
}

class B extends A{
public int test(String rrr){}//a是
public void test(String rrr){}//b类型不同
public int test(int rrr){}//c参数不同
public int test(){}//d参数不同
}

8、说出代码执行结果。6 8
public class Test{
public int x = 8;
public void move(int x){
System.out.println(x);
System.out.println(this.x);
}

public static void main(String[] args){
Test t = new Test();
t.move(6);
}
}

9、说出代码执行结果
public class X{
public X(){
System.out.println("XXX");
}
}

class Y extends X{
public Y(){
System.out.println("yyy");
}

public static void main(String[] aa){//输出xxxyyy
Y y = new Y();
}
}

10、说出代码执行结果
public class X{
public int x;
public int y;
public X(int x){
this.y = x;//将y的值赋值为10
}
}

class Child extends X{//找不到主方法
public Child(int x){
super(x); //x=10
}
}

class Test{
public static void main(String[] aa){
Child c = new Child(10);
System.out.println(c.x);//输出0
}
}

时间: 2024-12-13 21:33:10

面向对象--继承和重写的相关文章

Php面向对象 – 继承和重写

继承: php中,通过在类上,使用特殊的操作达到目的. 通过在定义类时,利用extends来指明当前类对象继承那个类的对象. 例子: class C { public  $p_c =  "value c"; } class D extends C { public  $p_d = "value d"; } $o =  new D; var_dump($o->p_c) var_dump($o->p_d) 输出:string(7) "value c

复习面向对象--继承,重写,重载,抽象详解

继承:在现有的基础上去构建一个新的类.构建出来的新类被称作子类,现有类称作父类,子类会自动拥有父类所有. 继承的优点: 提高了代码的可维护性: 提高了代码的复用性: 让类与类之间产生了继承关系 继承的弊端: 类与类之间的耦合度过高:(接口可以用于解耦和) 继承的特点: java中只能够单继承,不能多继承,可以多层继承: 所有类都直接或者间接的继承了Object类,Object类称为祖宗类: 继承的注意事项: 使用关键字extends让类与类之间产生继承关系: 父类私有的成员,子类不能继承: 继承

面向对象的类访问和对象访问的区别【this以及类访问】、静态成员的访问区别、类常量等、继承和重写、访问修饰限定符、冒泡排序

1.mysql封装类 在构造函数中定义初始化数据库连接的相关参数[因为实例化对象时传入的参数是该对象的唯一参数入口]但是不需要再构造函数中进行冗余定义,而是在构造函数中进行调用类中的其他方法的方式来实现构造函数的设置工作[这样的模块分离使逻辑更加简单] [重点]2.静态成员相当于每次实例化对象之间是有关系的[例如计数功能]因为每次实例化类时创建的对象占用的空间都是新创建的,这一点需要注意,所以同一个类下的对象之间的变量并没有交互的效果.[回想起当初函数中的静态局部变量的使用][延生到静态全局变量

面向对象(继承、重写、多态)以及异常处理

一.继承(单继承多继承继承:即可以继承多个父类) 目标: 实现代码的重用,相同的代码不需要重复的编写. class Human: #创建一个类 def eat(self): print('chi') def drink(self): print('he') def la(self): print('la') def sa(self): #有吃喝拉撒四种方法 print('sa') class Man(Human): #再创建一个类Man,以Human做父类,就继承了Human的四种方法 def

黑马程序员-OC面向对象继承关系和组合关系笔记

继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法: 继承的关系特点描述出来就是:** "是" **  (例如:学生类 是 人类) 组合关系描述的语句是:**** "拥有" ***  (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 ) 继承示例代码: #import <Foundation/Foundation.h> //Animal类的声明 @interface Animal : NS

12.面向对象(继承/super/接口/抽象类)

面向对象继承与派生继承继承顺序继承原理子类调用父类的方法(super)组合接口接口的概念:接口的概念解释和使用:python中的接口:抽象类 面向对象 继承与派生 继承 什么是继承?继承是一种创建新的类的方式 class A: pass class B(A): pass 在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或者超类,新建的类称为派生类或者子类 python中类的继承分为,单继承和多继承. 查看继承的方法B.__bases__ 如果没有指定基类,python的类会默

C#编程语言与面向对象——继承

现实生活中的事物都归属于一定的类别,比如,狮子是一种(IS_A)动物,为了在计算机中模拟这种关系,面向对象的语言引入了继承(inherit)特性. 构成继承关系的两个类中,Animal称为父类(parent class)或基类(base class),Lion称为子类(child class). 父类与子类之间拥有以下两个基本特性: 1.是一种(IS_A)关系:子类是父类的一种特例. 2.扩充(Extends)关系:子类拥有父类所没有的功能. class Animal { } class Lio

慕课网Java入门第二季6.1 达达租车系统,使用到继承、重写、多态、toString函数

为了方便理解,画了个UML图,可以参考一下为了方便理解,画了个UML图,可以参考一下 定义Car类型:载人+载货 public class Car { int id; String name; int seat; double load; double price; public Car(int id,String name,int seat,double load,double price){ this.id = id; this.name = name; this.seat = seat;

【转载】 C++多继承中重写不同基类中相同原型的虚函数

本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: virtual void TestA(); }; class CBaseB { public: virtual void TestB(); }; class CDerived : public CBaseA, public CBaseB { public: virtual void TestA()