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

【JAVA基础学习笔记8】

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

【JAVA基础学习笔记8】

面向对象

(Object-Oriented Programming,OOP)
以类的方式组织代码,以对象的组织(封装)数据

面向过程&&面向对象
  • 面向过程:线性思维,步骤清晰的一步步处理简单问题
  • 面向对象:分类的思维模式,将任务进行分工,以处理复杂的问题
三大特性
  • 封装

  • 继承

  • 多态

  • 对象:具体的事物

  • 类:对对象的抽象

  • 从认识的角度:对象-------->类

  • 从代码运行的角度:类--------->对象

静态类和非静态类的调用
  • 首先创建一个类
public class Student {
    //静态方法
    public static void learn(){
        System.out.println("The students are studying");
    }

    //非静态方法
    public void play(){
        System.out.println("The students are playing");
    }
}
  • 然后展示以上两种方法的调用
 public static void main(String[] args) {
        //静态方法 static
        Student.learn();
        //非静态方法:实例化这个类 new
        //对象类型 对象名称 = new 对象类型();
        Student student = new Student();
        student.play();
    }
  • 同一个类中,静态方法和非静态方法之间调用存在问题,相同类型之间可以相互调用
public void a(){
        b();  //因为a()和b()都是非静态方法,类实例化之后才存在,可以互相调用
    }
    public void b(){

    }
    public static void c(){
//        b(); //会报错,因为静态方法和类一起加载,不能调用还没有实例化的非静态类
    }
值传递和引用传递
public class Demoreview02 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a); //1
        Demoreview02.change(a);
        System.out.println(a);//1
        System.out.println("======================");
        Person person = new Person();
        System.out.println(person.name);//null
        Demoreview02.change(person);
        System.out.println(person.name);//kim
    }
    //值传递
    public static void change(int a){
        a = 2;  //没有返回值,操作不了对象
    }
    //引用传递,定义一个方法
    public static void change(Person person){
        person.name = "kim"; //没有返回值,但修改的是类里面的对象,可以修改成功
    }
}
//引用传递,定义一个类
class Person{
    String name;
}
类和对象的创建
  • 创建一个类
//教师类
public class Teacher {
    //属性:字段
    String name;
    int age;

    //方法
    public void teaching(){
        System.out.println("The teacher is in class");
    }
}
  • 创建一个对象
//一个项目只应该存在一个main()方法
public class DemoApplication {
    public static void main(String[] args) {
        //类:抽象的,实例化
        //类实例化后会返回一个自己的对象
        //teacher对象就是一个Teacher类的具体实例
        Teacher teacher = new Teacher();
        System.out.println(teacher.name);
        teacher.name = "jack";
        teacher.age = 30;
        System.out.println(teacher.name);
    }
}
构造器详解
  • 一个类即时什么都不写也会存在一个构造器(默认构造器,可以使用new)
  • 构造器:和类名相同;没有返回值
  • 没有有参构造器时,无参构构造器可以不写,直接使用
 public Teacher() {
    }
  • 当存在有参构造器时,无参构造器必须写上,否则报错
public class Teacher {
    String name;
    //实例初始化
    //构造器两个
    public Teacher() {
       
    }
    public Teacher(String name) {
        this.name = name; //this.name代表对象本身的name, 等号右边的name是构造器传递来的
    }
}
  • 构造器作用:new 本质上就在调用构造方法;初始化对象的值
  • 以下代码,调用上面定义的类
public class DemoApplication {
    public static void main(String[] args) {
        //new 实例化一个对象
        Teacher teacher = new Teacher();
        System.out.println(teacher.name);                    //null
        Teacher teacher1 = new Teacher("kim");
        System.out.println(teacher1.name);              //kim
    }
}
  • 构造器快捷键:Alt + Insert
  • this. (这个类的值)= (参数传进来的)
创建对象的内存分析 代码
  • 创建一个类
public class Pet {
    public String name;
    public void shot(){
    }
}
  • 调用类
public class Application {
    public static void main(String[] args) {
            Pet dog = new Pet();
            dog.name = "旺财";
            dog.shot();
            Pet cat = new Pet();

    }
}

代码运行过程中内存分析

  • 第一步,在方法区加载Application类中的main()方法到栈中
  • 第二步,执行main()过程中,加载Pet模板
  • 第三步,根据Pet模板在栈中生成了一个dog变量名,new在堆中生成一个对象,调用模板里的方法
  • 第四步,赋值
  • 同理添加引用变量名
小节
  • 类与对象:类是一个抽象的模板,对象是一个具体的实例

  • 方法:先定义,再使用

  • 对象的引用:对象是通过引用来操作的,在内存上就是 栈---------->栈

  • 属性:类的成员变量,默认初始化 数字:0/0.0、char:u0000、boolean:false、引用:null 。 修饰符 属性类型 属性名 = 属性值

  • 对象的创建和使用

  • 必须使用new关键字创造对象,构造器 。对象类型 对象名 = new 对象类型()

  • 对象的属性 对象名.属性名

  • 对象方法 对象名.方法名()

  • 静态的属性 属性

  • 动态的行为 方法

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

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

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