• Java学习笔记16(面向对象九:补充内容)


    总是看到四种权限,这里做一个介绍:

    最大权限是public,后面依次是protected,default,private

    private修饰的只在本类可以使用

    public是最大权限,可以跨包使用,不同包的子类和无关类都可以使用,可以修饰类,方法,成员变量

    不写权限就是default默认权限:限于本包内使用

    protected权限:跨包后的类如果有继承关系(子类),不能使用default修饰的,而可以使用protected修饰的,调用时候必须在子类的里面才可以调用父类的受保护权限,注意protected不能修饰类

    日常开发用的只有:public、private

    另外注意:

    abstract不可以与static,private,final写在一起

    关于代码块:

    示例

    public class Person {
        private String name;
        private int age;
        public Person(String name,int age){
            this.age = age;
            this.name = name;
            System.out.println("构造方法");
        }
        //构造代码块
        {
            System.out.println("构造方法代码块");
        }
        //静态代码块
        static{
            System.out.println("静态代码块");
        }
    }
    //静态代码块,只执行一次
    //构造代码块,每次创建对象都会执行,优先于构造方法
    public class Test {
        public static void main(String[] args) {
            Person person1 = new Person("张三", 18);
            Person person2 = new Person("李四", 18);
        }
    }
    /*
    输出:
    静态代码块
    构造方法代码块
    构造方法
    构造方法代码块
    构造方法
    */

    还有一些补充内容:

    文档注释和生成jar包

    随意写一个类

    package demo;
    
    /**
     * @author dell
     * @version 1.0
     */
    public class Person {
        /**
         * 
         * @param a
         * @param b
         * @return function
         */
        public int function(int a, int b){
            return a+b;
        }
    }

    利用eclipse,选择工程,右键export里面有选择Java,里面有Javadoc等文件,

    选择后会生成一套网页,相当于说明书,可以查看相关内容

    也可以选择java的其他选项,生成jar包等

    导入jar包方式:

    通常是在工程目录下新建一个lib文件夹,放入jar包,右键build path  -> add to build path,使用时候import就可以了

    面向对象的补充:

    1.类可以作为方法的参数传递,即方法的参数可以是一个对象,实质上是传递一个内存地址,在方法中进行对象的相关操作

    2.和第一条类似,类也可以作为方法的返回值,即返回一个对象的引用

    3.抽象类也可以作为方法的参数和返回值,区别在于:

       抽象类没有对象,只能利用多态的特性传递(返回)抽象类的子类对象,注意接收返回值的时候类型必须是抽象类而不是子类

    4.接口同样可以作为方法的参数和返回值:

       接口也没有对象,必须传递接口的实现类对象,注意可以利用多态创建实现类对象也可以直接创建实现类对象,

       同样,作为返回值的时候虽然传入的是实现类对象,但是接收的时候必须是接口类型

    针对上面的补充内容写一个简单的案例来理解:

    public abstract class Animal {
        public abstract void eat();
        public static Animal getInstance(){
            return new Cat();
        }
    }
    public class Cat extends Animal {
        public void eat(){
            System.out.println("猫在吃");
        }
    }
    public class Test {
        public static void main(String[] args) {
            Animal a = Animal.getInstance();
            a.eat();//输出:猫吃鱼
        }
    }
  • 相关阅读:
    ExtJS 刷新或者重载Tree后,默认选中刷新前最后一次选中的节点代码片段
    ios>APP名称的多语言化(转)
    android>apk破解以及重新编译(转)
    MFC动态库基本概念
    (内存中的)堆和栈的区别(转过无数次的文章)
    面向对象五大基本原则
    VS20052008程序发布、打包(MFC)
    在MFC中创建动态控件的生成与响应
    SQL2000自动备份数据库并发送邮件报告数据库自动备份情况
    The Concept of Callbacks
  • 原文地址:https://www.cnblogs.com/xuyiqing/p/8249962.html
Copyright © 2020-2023  润新知