美文网首页
JAVA总结

JAVA总结

作者: 拉格朗日没有夜 | 来源:发表于2018-05-12 16:40 被阅读0次

    一、面向对象

    1. 类、对象、变量

    (1)所有的Java程序都已类class为组织单元;类由属性和方法两部分组成
    (2)先创建对象,再使用对象
    (3)成员变量:类中定义,自动定义初始值
    局部变量:类方法中定义(两变量同名,局部变量有更高的优先级)

    2. 构造方法

    构造方法是定义在java类中的一个用来初始化对象的方法,与类同名且没有返回值。

    public 构造方法名(){
    
    }
    

    其中构造方法名与类同名;当没有指定的构造方法时,系统会自动添加无参构造方法

    3. Static使用

    Static修饰的成员属于整个类,被类的所有对象共享。可通过使用类名直接访问静态成员,也可通过对象名
    Static可以修饰变量、方法和代码块

    (1)Static使用之静态方法

    public class Helloworld {
        public static void print() {
            System.out.println("***");
        }
    
        public static void main(String[] args) {
            Helloworld.print();
            Helloworld demo = new Helloworld;
            demo.print();
        }
    }
    

    注意:静态方法中可以直接调用同类的静态成员,但不可以直接调用非静态成员;普通成员方法中可以直接访问同类的非静态变量和静态变量;静态方法中不能直接调用非静态成员方法

    (2)Static使用之静态初始化块

    静态初始化块在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通成员

    public class Helloworld {
        int num1;
        int num2;
        static int num3;
    
        public Helloworld() {
            num1 = 91;
            System.out.println("构造方法为num1赋值");
            num2 = 74;
            System.out.println("初始化块为num2赋值");
            num3 = 83;
            System.out.println("静态初始化块为num3赋值");
        }
    
        public static void main(String[] args) {
            Helloworld hello = new Helloworld();
            System.out.println(hello.num1);
            System.out.println(hello.num2);
            System.out.println(num3);
            Helloworld hello2 = new Helloworld();
        }
    }
    

    运行结果:静态初始化块为num3赋值
    初始化块为num2赋值
    构造方法为num1赋值
    91
    74
    83
    初始化块为num2赋值
    构造方法为num1赋值

    二、java面向对象的特性

    1. 封装性:将类的某些信息隐藏在内部,通过类的方法来实现操作访问

    步骤:
    1.1 修改属性可见性;
    1.2 创建getter\setter方法;
    1.3在方法中加入属性控制语句

    (1)静态内部类:

    public class SOuter {
        private int a = 99;
        static int b = 1;
    
        public static class SInner {
            int b = 2;
    
            public void test() {
                System.out.println("访问外部类b" + SOuter.b);
                System.out.println("访问内部类b" + b);
            }
        }
    
        public static void main(String[] args) {
    
            //三行表示
            SInner sInner;
            sInner = new SInner();
            sInner.test();
    
            //两行表示
            SInner si = new SInner();
            si.test();
    
            //一行表示
            new SInner().test();
    
        }
    }
    

    (2)成员内部类:访问外部类时使用this指针

    (3)方法内部类:只能在该方法中使用,且不能使用访问控制符和Static修饰符

    2. 继承性

    (1)一般形式:class 子类 extends 父类
    (2)方法重写:子类对继承的父类方法不满意可以重写,调用时优先调用子类方法
    (3)继承的初始化顺序:先初始化父类,再到子类;先执行初始化对象中属性,再执行狗在方法中的初始化
    (4)父类对象--属性初始化--构造方法--子类对象--属性初始化--构造方法
    (5)注意:如果子类构造方法中没有显示调用父类的构造方法,默认调用父类无参构造方法,若此父类没用无参的构造方法,则编译出错

    3. 多态性

    引用多态:父类的引用可以指向本类的对象,也可指向子类的对象
    方法多态:创建本类对象时,调用的方法为本类方法;创建子类对象时,调用的方法为子类的重写的方法或者继承的方法

    (1)抽象类

    用关键字abstract修饰:抽象类只用声明不需要实现;包含抽象方法的类为抽象类;抽象类不能直接创建,可以定义引用变量。

    public abstract class Telphone{
    public abstract void call();            //抽象方法没有方法体,以分号结束
    }
    

    (2)接口(一种特殊的类,有全局变量和公共抽象方法组成)

    [修饰符] class 类名 extends 父类implemrnts 接口1,2……
    {类体部分
    }
    注:接口经常与匿名内部类配合使用

    public interface Iplay{
         public void phone();
    }
    public class People implements Iplay{
         public static void main(String[] args){
             People test=new People();
             test.phone();
          }
         public void phone(){
               System.out.println("手机可以玩游戏");
         }
    }
    

    相关文章

      网友评论

          本文标题:JAVA总结

          本文链接:https://www.haomeiwen.com/subject/hrlhdftx.html