• 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("打火");
    }
    }


    }

  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/simly/p/10106505.html
Copyright © 2020-2023  润新知