栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java笔记之 类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java笔记之 类

    全局变量有默认值(new对象中会有初值0),局部变量没有默认值全局变量只能声明和创建语句,不能有赋值语句。局部变量可以有赋值语句
    public class demo{
        public static void main(String[] args) { 
    		int x; 
    		x = 1;   //在main方法中是正确的,出了main方法就错了 
    		int y = 1;
        }
    }
    

    构造方法没有类型,必须要以类的名字来命名。如果没有声明,就默认声明一个没有参数没有语句体的构造方法。类中可以有多个构造方法,但是参数必须要不同,此时在创建对象的时候可以选用不同的构造方法用new声明的对象叫做对象的一个引用,分配给对象的变量叫做对象的实体
    //new a = Zimu()
    //(a是引用)  (Zimu是一个实体)

    引用类型的参数传值:当一个类声明的两个对象有相同的引用(对象名相同),那么二者就有完全相同的变量,指向相同的实体。当一个对象操作其引用的变量发生改变,另一个也会改变。除非重新创建一个新的引用,则原引用不会受影响。(P70例7)对象的组合:原理和6差不多this.成员变量:用该方法赋值后,说明该类中其他的该成员变量也都是这个值(因此this不可以出现在类方法中!,同时还有个原因是因为类方法可以通过类名直接调用,此时任何对象可能还没有创建)
    class Tom{
           private int x = 120;
           protected int y = 20;
           int z = 11;
           void showX(){
                 System.out.println(x);
    }
           public void setX(int x){
                 this.x = x;
                 System.out.println(x);
    }
    } 
    
    public class E {
              public static void main(String arg[]) {
               Tom tom = new Tom();
               Tom jiafei = new Tom();
               tom.setX(22);     //22
               tom.showX();      //22
               jiafei.showX();   //120
        }
    }

    访问权限:

    成员变量成员方法构造方法可以是上面的任何一个访问权限。不可以用protected和private修饰类。

     继承:子类可以调用父类的非private方法。

    方法重载:一个类中可以有多个名字相同的方法,但是参数必须不同(参数个数或参数类型不同)

    构造方法可以被重载,static方法也可以被重载。不可以用static修饰构造方法(类方法被加载到相应的内存后就有了相应的地址,而实例方法只有用构造方法声明后才有相应地址。二者作用矛盾)!static方法可以进行重写操作,但是重写后,子类对象的上转型对象不能调用子类的static方法,而只能调用父类的static方法。

    class Animal{
    
        public static int get(int n){
            return n+10;
        }
    
        public int see(int n){
            return n+10;
        }
    }
    
    class Dog extends Animal {
    
        public static int get(int n){
            return n*10;
        }
    
         public int see(int n){
            return n*10;
    
        }
    }
    
    public class lei {
    
       public static void main(String args[]){
    
           Animal animal = null;
           Dog dog = new Dog();
           animal = new Dog();       
           System.out.printf("%d,%d,%d",animal.get(10),dog.get(10),animal.see(10)); //20,100,100
    
       }
    }

    方法重写:子类的方法和父类方法类型 名字 参数完全相同。这时父类的方法会被隐藏(变量的隐藏:自类变量和父类变量名字相同)。这时子类就不可以调用父类被隐藏的方法和变量,除非用super()。

    关于子类操作的变量:子类继承的方法 :只可操作子类继承和隐藏的成员变量。  子类新定义的方法: 可操作子类继承和子类新声明的成员变量,不可操作被隐藏的成员变量和方法(除非super())   子类重写的方法 :同新定义的。

    如果想在子类中使用被子类隐藏的成员变量或方法,就要用super.x或super.play()。super调用父类的构造方法:子类是不继承父类的构造方法的。必须要用super()来调用,且参数要与父类的参数设置一致,且必须是子类构造方法中第一句。只是,当父类构造方法为默认的时,子类构造方法通常默认有super(),因此不必写。但是当父类的构造方法定义了一个或多个构造方法是,要想子类不写super,就必须要规定一个无参数的构造方法。子类构造方法中不可以有多条super调用父类的某个构造方法的语句!super关键字形成的语句必须是子类构造方法中的第1条语句(×)  子类可以用super关键字调用父类的父类中的方法(×)

    final关键字:类不可以被继承 不可以修饰构造方法 不可以被子类重写 他可以认为是一个常量,但是没有默认值,必须要指定该常量。不允许用final和abstrat同时修饰一个方法或类。final方法可以是static方法。

    对象的上转型对象(可参考P127例子10):简而言之就是父类用子类的方法。但是对象的上转型对象只可以操作两个:1.隐藏或继承的变量(原属于父类) 2.继承或重写的对象(是子类的,表现出多态)

    class 类人猿{
         int m = 10
       void cryspeak (String s){
           System.out.println(s);
        }
    }
    
    class People extends 类人猿{
        int m = 100;
       void cryspeak (String s){
           System.out.println(s);
          }
    }
    
    public class E{
      public static void main(String arg[]){
           类人猿 monkey;   //或 类人猿 monkey = null;
           People geng = new People();
           monkey = geng; //monkey 是People对象geng的上转型对象
           //还可直接:类人猿 monkey = new People();
           monkey.cryspeak("啊啊啊");//等价于geng.cryspeak("啊啊啊");
           monkey.m  //输出是10

    abstract方法 只允许声明,不允许实现,因此不可以用new创建该类的对象。没有方法体。不可以用static修饰abstract方法(即abstract方法必须是实例方法)。abstract类中可以有abstract方法,也可以有非abstract方法。非abstract类中不可以有abstract方法。 如果一个abstract类的子类为非abstarct类,那么它必须重写父类的方法。

    方法局部变量的命名和方法的形参不能相同。  当成员变量命名与方法的形参或局部变量一样时,即使形参或局部变量的赋值与成员变量不同,成员变量也不会变(Java的就近原则),除非有this声明。

    public class Mainceshi {
        private String a = "成员变量";
     
        public void GetA() {
            String a = "局部变量";
            System.out.println(this.a);
            System.out.println(a);
        }
     
        public static void main(String[] args) {
            Mainceshi mainceshi = new Mainceshi();
            mainceshi.GetA();    //成员变量 局部变量
        }
    }
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759045.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号