zoukankan      html  css  js  c++  java
  • JAVA学习---面向对象基础

    1.理解面向对象

    1.1了解常用的术语

    对象、抽象、类、实例、抽象类、接口、构造方法、包、封装、继承、多态

    1.2面向对象与面向过程的区别

    博文1博文2

    1.3理解对象

    对象---现实世界(包括逻辑世界)的实体的投影和属性

    属性---对象的性质

    方法---对象的行为

    1.4理解类

    类是对事物的抽象,将对象的属性和方法封装到独立的单位内部。

    2.类

    2.1类的定义(public、default、abstract、final修饰符)

    [访问修饰符] [修饰符] class类名{
          //类成员
    }

    访问修饰符:public(公开的,最多只有一个包含public修饰的外部类)、default(默认修饰符,可以有多个)

    修饰符:abstract(修饰抽象类,只能被继承重写)、final(修饰最终类,不能被继承)

    2.2成员变量---对应于属性

    2.3成员方法---对应于方法

    成员方法:构造方法、main方法、一般成员方法

    2.4成员修饰符(public、protected、default、private、static、final、abstract、native、synchronized)

    可访问权限

    名称 当前类 相同包 子类(不同包) 所有类
    public
    protected  
    默认    
    private      

    static:静态,不需要创建类的实例就可以访问,具有全局变量的效果

    final:最终类,属性方法无法修改,可以被继承而不可以重写

    abstract:修饰抽象类,方法只有被重写才能使用,自己不能被创建实例对象

    native:被修饰方法可以调用非java编写的代码,语言交互

    synchronized:同步锁

    2.6成员变量和局部变量的区别

    (静态变量=类变量)+实例变量 = 成员变量

    定义的位置不同,成员变量存在于类中,局部变量存在于方法中

    生命周期不同,成员变量与实例对象生命周期一致,局部变量和方法生命周期一致

    作用域不同,成员变量在整个类内部可以访问,局部变量则只有在方法中可以访问

    修饰符不同(大概局部变量只能被final修饰)

    优先级不同,局部变量优先级高

    局部变量必须进行变量初始化

    2.7 main方法

    主方法,程序的入口点,也是程序第一个被执行的方法

    3.类的实例

    3.1构造器

    构造方法,与类名相同,完成实例的初始化,可以有多个,无参或有参,一般public修饰,使用this相互调用(放在第一行)

    3.2创建类的实例

    2种方法
    1----类名 实例名 = new 类的构造方法名(); 2----类名 实例名 = null; 实例名 = new 类的构造方法名();

    3.3访问实例的成员

    实例名.属性名;
    实例名.方法名();

    3.4 this关键字

    实现访问自身类的方法或属性

    3.5匿名对象

    一种类似简写的形式:new 类的构造方法名.属性名或方法名();

    3.6垃圾回收(System.gc()、Runtime.getRuntime().gc())

    不定期的清理无引用的对象所占据的空间

    4.方法

    4.1方法的定义

    4.2方法的分类(无参数方法、有参数方法、无返回值、返回基础数据类型的值、返回引用数据类型的值)

    4.3方法的调用

    4.4方法的参数传递(值传递、引用传递)

    4.5方法的重载

    两个或多个同名的方法,并且方法的参数、类型、顺序至少有一个不同

    5. static关键字

    5.1使用static修饰变量

    5.2使用static修饰方法

    5.3使用static修饰代码块---可以为类的属性进行初始化

    5.4单例模式---确保指定类只有一个实例

    6.包

    6.1包的概念及应用(分类、访问权限限制、避免类的重名冲突)

    package 包名;

    6.2使用import导入包(使用长名类、使用import语句)

    import 包名.类名; //导入某个类
    import 包名. *;     //导入所有类

    6.3 Java常用的包

    java.lang:Java的基础类;

    java.awt:创建用户图形界面的类文件集合;

    java.swing:轻量级组件包;

    java.io:与输入输出相关的文件和流的操作类与接口;

    java.util:各种工具类;

    java.net:网络编程方面的类和接口;

    java.sql:数据库访问相关类集合。

    import sun.tools.tree.ThisExpression;
    
    //学生成绩信息管理
    public class Demo6_1 {
        
        private String name;
        private String major;
        private double dbmath;
        private double dbenglish;
        
        private void  setMessage(String name, String major, double dbmath, double dbenglish) {
            this.name = name;
            this.major = major;
            this.dbmath = dbmath;
            this.dbenglish = dbenglish;
        }
        
        private void getMessage() {
            System.out.print("学生信息如下:
    ");
            System.out.print("姓名:" + this.name + " 专业:" + this.major + " 数学成绩:" + this.dbmath + " 英语成绩:" + this.dbenglish);
        }
        private void sum() {
            System.out.println("学生的总成绩为:" + (this.dbmath + this.dbenglish));
        }
        private void average() {
            System.out.print("学生的平均成绩为:" + ((this.dbmath + this.dbenglish)/2));
        }
        
        public static void main(String[] args) {
            Demo6_1 stu = new Demo6_1();
            stu.setMessage("张三", "电子科学与技术", 150, 148);
            stu.getMessage();
            stu.sum();
            stu.average();
        }
    }

    学生信息如下:
    姓名:张三 专业:电子科学与技术 数学成绩:150.0 英语成绩:148.0学生的总成绩为:298.0
    学生的平均成绩为:149.0

  • 相关阅读:
    [GIT]指定分支下创建分支
    [架构]辨析: 高可用 | 集群 | 主从 | 负载均衡 | 反向代理 | 中间件 | 微服务 | 容器 | 云原生 | DevOps
    [Linux]常用命令之【vi/grep/find】
    [Linux]常用命令之【netstat/ps/lsof/ss/kill/】
    [Linux]常用命令之【nl/sed/awk/wc/xargs】
    移动端vw页面适配方案在vue项目中的应用
    关于跨域,你应该知道的
    关于call、apply和bind,请看这篇
    JavaScript数组常用API方法汇总
    JS浅拷贝与深拷贝实现方式
  • 原文地址:https://www.cnblogs.com/zouhq/p/10541731.html
Copyright © 2011-2022 走看看