【java】Java的继承,方法重写,访问权限

继承

**首先面向对象的三大特性:

1. 封装

2. 继承

3. 多态**

语法

      class Subclass extends Superclass{ }

作用

  1. 继承的出现提高了代码的复用性。
  2. 继承的出现让类与类之间产生了关系,提供了多态的前提。
  3. 不要仅为了获取其他类中某个功能而去继承

例子

class Person {
    String name;
    int age;
}

/*继承与Person类*/
class Student extends Person {
    int weight;
}
  • Student类继承了Person类,他拥有了Person类的所有成员变量
  • Student类拥有自己的一个成员变量
  • 如果Person类里里面的变量是private的,子类就不能直接访问了,只能通过get和set函数
  • Java中只有单继承,也就是一个子类只能继承一个父类

子类和父类构造器的调用

  1. 子类中所有的构造器默认都会访问父类中空参数的构造器
  2. 当父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器,且必须放在构造器的第一行
  3. 如果子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器,则编译出错
class Person {
    String name;
    int age;

    Person() {
        System.out.println("Person的构造器!");
    }
}

class Student extends Person {

    Student() {
        System.out.println("Student的构造器!");
    }

    int weight;
}

结果:

Person的构造器!
Student的构造器!

方法重写

要求

  1. 重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型。
  2. 重写方法不能使用比被重写方法更严格的访问权限。
  3. 重写和被重写的方法须同时为static的,或同时为非static的
  4. 子类方法抛出的异常不能大于父类被重写方法的异常
class Person {
    String name;
    int age;

    public void say() {
        System.out.println("I am person!");
    }
}

class Student extends Person {
    int weight;

    public void say() {
        System.out.println("I am student!");//方法重写
    }
}

下面这个情况不是方法重写

class Person {
    String name;
    int age;

    public void say() {
        System.out.println("I am person!");
    }
}

class Student extends Person {
    int weight;

    private void say() {
        System.out.println("I am student!");//不是方法重写
    }
}

访问权限

时间: 2024-11-03 21:04:03

【java】Java的继承,方法重写,访问权限的相关文章

Java基础知识强化17:JAVA不可以将所覆盖的方法的访问权限变得比父类的小

首先我们看一下下面的代码如下: 1 interface I { void go(); } 2 abstract class A implements I { } 3 4 class C extends A { 5 void go(){ System.out.println("I love you!"); } 6 } 在线编译出现如下报错: 分析: 出现这个错误的原因是: 接口的方法默认修饰符是:public abstract 这里实现的go( )方法的修饰符是default,访问权限降

override(重写,覆盖) 1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载,过载) 1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。 3、存在于父类和子

override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. 5.方法被定义为final不能被重写. overload(重载,过载) 1.参数类型.个数.顺序至少有一个不相同.   2.不能重载只有返回值不同的方法名. 3.存在于父类和子类.同类中. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(O

java中4种修饰符访问权限的区别及详解全过程

java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为public.protect.default.private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高. 下面详细讲述下它们的访问权限问题.(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况.) 首先在这里把它们的访问权限表示出来:

Thinking In Java笔记(第六章 访问权限控制)

第六章 访问权限控制 简介 Java提供了访问权限修饰词,供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的.访问权限控制的等级,从最大权限到最小权限一次为:public.protected.包(library)访问权限(没有关键词)以及private. 6.1 包(library):库单元 包内含有一组类,它们在单一的名字控件之下被组织在一起.例如,在Java的标准发布中有一个工具库,它被组织在java.util名字空间之下.java.util中有一个叫ArrayList的类,使用A

C++语言笔记系列之十四——继承后的访问权限

1.析构函数不继承:派生类对象在析构时,基类析构函数的调用顺序与构造函数相反. 注:派生类对象建立时要调用基类构造函数,派生类对象删除时要调用基类析构,顺序与构造函数严格相反. 2.例子 example 1 #include <iostream.h> #include <math.h> class Point { public: Point(double a, double b, doule c) { x = a; y = b; z = c; } double Getx() {re

Java之路(五) 访问权限控制

在Java中,所有事物都具有某种形式的访问权限控制. 访问权限的控制等级从最大到最小依次为:public,protected,包访问权限(无关键词)和private. public,protected和private这几个Java访问权限修饰词在使用时,是置于类中每个成员(域或者方法)定义之前的. 一.类成员的访问权限 取得对某成员的访问权的唯一途径是: 1).使该成员成为public.无论谁在哪里,都可以访问该成员: 2).通过不加访问权限的修饰词并将其他类放置于同一包内的方式给成员赋予包访问

Java编程思想:第6章 访问权限控制

访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 很多时候我们需要重构代码使之更可读,更易理解,更具维护性,但是又不能影响到客户端程序员的正常使用.我们根本不知道客户端程序员使用了哪些东西(方法),所以我们也不知道哪些东西可以改,为了解决这个问题,java提供了访问权限修饰词.访问修饰词加上包结构使得构件的捆绑和使用机制非常完善,不产生冲突. 6.1 包:库单元 用包来分隔管理不同的类. 不同包下的类需要导入,就是为了提供一个管理名字空间的机制.package 和 import就是为了解

Java编程思想(六、访问权限控制)

访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关.便于未来重构代码,而不必对业务层做过多的改变.因此,Java提供了访问控制修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的. 访问控制的等级,从最大权限到最小权限依次为:public.protected.包访问权限(没有关键词).和private. 1.包:类库单元.包内含有一组类,它们在单一的名字空间之下被组织在了一起.比如,在Java的标准发布中有一个工具库.它被组织在java.util名字空间之下.ja

浅析 Java 中的继承和重写

Java 中的构造方法不能被继承. Java 中 static 修饰的方法可以被继承,但不能被子类重写. Java 中 final 修饰方法不允许被子类重写,但是可以被子类继承,final 不能修饰构造方法. Java 中子类可以继承父类的私有成员,但是不能(直接)访问,私有方法不可以重写. 原文地址:https://www.cnblogs.com/hglibin/p/11247597.html

Java类和类成员的访问权限修饰符

一:访问修饰符: 1.省略访问修饰符 具有默认的访问特性,即具有包访问特性,只能被同一个包中的类使用. 2.public访问修饰符 用于说明类和类的成员的访问权限.这种类叫公有类.在一个文件中只能有一个public类型的类. 例如:Rect和UseImport两个类,分别在两个不同的包中.顺便回顾一下不同类要用import导入.(哎,一直就没记住) //Rect.java pacakage my; public class Rect { private int a,b; public void