• java 06 重写(覆盖) final 内部类


    方法重载
    -------------------
    方法名称一样 ,只是类型不一样叫重载
    在有继承的前提下才有方法的重载。

    方法覆盖(重写)
    ---------------------------
    1.和父类方法名称相同
    2.不能是私有方法
    3.super可以访问父类方法
    4.注意事项(参数的形态必须一致,名称无所谓。)
      a.权限要大于等于父类的权限。(父类中可以是 void consume(int money){} 子类中是public void consume(int money){})

      b.静态的无法覆盖非静态的  即静态覆盖静态的,非静态的覆盖非静态的。 必须是一致的。

      c.子类中的所有的构造函数都会默认访问父类的空参数的构造函数,父类没有空构造需要子类传参数访问

      d.因为每一个构造函数的第一行都有一条默认的语句  super();

    class OverrideDemo1{
    public static void main (String[] args){
    RiceMan2 s2 = new RiceMan2();
    s2.consume(570);
    }

    }

    class RiceMan{
    public void consume(int money){
    if (money<500){
    System.out.println("消费了" + money+"w");
    }
    else {
    System.out.println("消费限制,不能超过500W");
    }
    }
    }

    //继承父类的,子方法中跟父类的方法一样的话就会覆盖掉
    class RiceMan2 extends RiceMan{
    public void consume(int money){
    if (money<1000){
    System.out.println("消费了" + money+"w");
    }
    else {
    System.out.println("消费限制,不能超过1000W");
    }

    //super.consume(money); 可以通过super的方法调用父类的函数
    }
    }

    简单的重写方法

    --------------------------------------------------------

    class OverrideDemo1{
    public static void main (String[] args){
    RiceMan2 s2 = new RiceMan2();
    s2.consume();
    }

    }

    class RiceMan{
    public String name;
    public String color;
    public void consume(){
    System.out.println("爬500W");
    }
    }

    //继承父类的,子方法中跟父类的方法一样的话就会覆盖掉
    class RiceMan2 extends RiceMan{
    public void consume(){
    System.out.println("爬1500W");
    }
    }

    final

    ----------------------------------

    1.可以修饰方法、类、变量

          类: final calss Dog     //final修饰类那么就不能继承

         方法: final void add()     //final修饰方法那么就不能重写

         字段: final void add()     //final修饰方法那么就不能重写

    final

    -------------------------------

    1.修饰方法

         方法:

    final class Dog{}不能被继承 不能被重写

    2.修饰的函数

       方法:final class(){} 不能被重写

    3.修饰的字段

    类的成员

    ---------------------------------

    1.成员变量

    2.成员函数

    3.构造代码块

    4.构造函数

    5静态代码块

    6.内部类

    内部类:

    ----------------------------------------

    1.定义在class内部的类。

    2.编译产生的outerclass$innerc.class

     new Benz().fire();调用内部类中的方法

    加final的修饰class

    -----------------------------------------------------

    class FinalDeom{
    public static void main(String[] args){
    Jing8 j = new Jing8 ();
    j.watch();
    }
    }

    final class Dog{
    public void watch(){
    System.out.println("来人了~~");
    }
    }

    class Jing8 extends Dog{
    public void watch(){
    System.out.println("问一下~~");
    super.watch();
    }
    }

    加final 修饰方法  不能被重写会报错

    -----------------------------------

    class FinalDeom{
    public static void main(String[] args){
    Jing8 j = new Jing8 ();
    j.watch();
    }
    }

    class Dog{

    //final  修饰方法  不能被重写
    public final void watch(){
    System.out.println("来人了~~");
    }
    }

    class Jing8 extends Dog{
    public void watch(){
    System.out.println("问一下~~");
    super.watch();
    }
    }

    final 修饰常量 不能被赋值

    --------------------------------------------

    class FinalDeom{
    public static void main(String[] args){
    Jing8 j = new Jing8 ();
    j.name = "王春梅";
    j.watch();
    System.out.println(j.name);
    }
    }

    class Dog{
    //常量
    public final String name ="哈哈哈";
    public void watch(){
    System.out.println("来人了~~");
    }
    }

    class Jing8 extends Dog{
    public void watch(){
    System.out.println("问一下~~");
    super.watch();
    }
    }

    习题

    ---------------------------------------------

    class FinalDeom2{
    public static void main(String[] args){
    Benz c = new Benz ();
    c.fire();
    c.color = "red";
    System.out.println(c.color);
    c.tires = 5;
    System.out.println(c.tires);
    c.run();

    }
    }

    class Car{
    public String color;
    public int tires;
    public void run(){
    System.out.println("200无敌~~");
    }
    }

    class Benz extends Car{
    private String brand ="BENZ";
    public final void fire(){
    System.out.println("bombom~~");
    }
    }

    调用内部类

    -----------------------------------------------

    class FinalDeom2{
    public static void main(String[] args){
    Car  c = new Car  ();
    c.run();

    }
    }

    class Car{
    public String color ="黑色";
    public int tires;
    public void run(){
    new Benz().fire();//匿名调用内部类中的方法
    System.out.println("200无敌~~");
    }
    class Benz {
    public final void fire(){
    System.out.println("bombom~~");
    }
    }


    }

    //内部类访问外部类的局部变量需要用final修饰局部变量

    --------------------------------------------------------------------------------

    class InnnerDeom{
    public static void main(String[] args){
    Car Ben = new Car();
    Ben.run();

    }
    }

    class Car {
    public String color = "黑色";
    public int tirs ;

    public void run(){
    //内部类访问外部类的局部变量需要用final修饰局部变量
    final String key ="DaSA";

    class Engine {
    public void fire(){
    System.out.println("插入钥匙" +key);
    System.out.println("打火");
    }
    }

    new Engine().fire();
    System.out.println("200 开始run");
    }


    }

    外部类访问其他的内部类,可以采用 Ben.new Engine().fire(); 的方式

    ------------------------------------------------------------------------

    class InnnerDeom3{
    public static void main(String[] args){
    Car Ben = new Car();
    Ben.new Engine().fire();

    }
    }

    class Car {
    public String color = "黑色";

    class Engine {
    public void fire(){
    System.out.println("打火");
    }
    }


    }

    外部类访问其他的内部类,可以采用 Ben.new Engine().fire(); 的方式

    ------------------------------------------------------------------------

    class InnnerDeom3{
    public static void main(String[] args){
    Car Ben = new Car();
    new Car.Engine().fire();

    }
    }

    class Car {
    public String color = "黑色";

        static class Engine {
    public void fire(){
    System.out.println("打火");
    }
    }


    }

    访问外部类的变量

    ----------------------------------------------------

    class InnnerDeom3{
    public static void main(String[] args){
    Car Ben = new Car();
    Ben.new Engine().fire();

    }
    }

    class Car {
    public String color = "黑色";
    public int ties = 4;

    class Engine {
    public int ties = 4;
    public void fire(){
    //访问外部类的变量
    System.out.println(Car.this.ties);
    System.out.println("打火");
    }
    }


    }

  • 相关阅读:
    hdu 1863 畅通工程
    poj 2524 Ubiquitous Religions
    04 Linux终端命令01
    05 linux中yum源报错
    Filterg过滤器和Listener监听器
    03 Centos的文件目录、远程连接工具及快照操作
    02 安装虚拟机以及设置虚拟机网卡信息
    01VM虚拟机介绍及配置虚拟机网卡信息
    Jstl表达式
    EL表达式
  • 原文地址:https://www.cnblogs.com/simly/p/10106505.html
Copyright © 2020-2023  润新知