IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java 面向对象 -> 正文阅读

[Java知识库]java 面向对象

一? 类的结构

面向对象思想实现的规则

  • 创建类,设计类的成员
  • 创建类的对象
  • 通过对象.属性 或 对象.方法调用对象的结构
    ?

对象的创建与对象的内存解析

Person p1 = new Person();Person p2 = new Person();Person p3 = p1;//没有新创建一个对象,共用一个堆空间中的对象实体。/*说明:*如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)*意味着:如果我们修改一个对象的属性a,则不影响另外一个对象属性a的值。*/

?

匿名对象:

我们创建的对象,没显式的赋给一个变量名。即为匿名对象

特点:匿名对象只能调用一次
?

new Phone().sendEmail();
new Phone().playGame();
        
new Phone().price = 1999;
new Phone().showPrice();//0.0


?

PhoneMall mall = new PhoneMall();
 
//匿名对象的使用
mall.show(new Phone());
其中,
class PhoneMall{
    public void show(Phone phone){
        phone.sendEmail();
        phone.playGame();
    }
}

类的结构之一:属性

  • 属性:直接定义在类的一对{}内
  • 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量。
    ?

?

?

类的结构之二:方法

自定义的方法:

?

public void eat(){
    System.out.printly("我要吃饭!!!");
}
 
public String getNation(String nation){
    System.out.printly("当前地点为" + nation);
}

方法的声明:
权限修饰符 返回值类型 方法名(形参列表){

方法体

}
?

重载的概念

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

// 举例一:Arrays类中重载的sort() / binarySearch();PrintStream中的println()
// 举例二:
// 如下的4个方法构成了重载
public void getSum(int i,int j){
    System.out.println("1");
}
 
public void getSum(double d1,double d2){
    System.out.println("2");
}
 
public void getSum(String s ,int i){
    System.out.println("3");
}
 
public void getSum(int i,String s){
    System.out.println("4");
}

内存解析:

内存解析画法要点:

  1. 内存结构:栈(局部变量)、堆(new出来的结构:对象(非static成员变量)、数组
  2. 变量:成员变量 vs 局部变量(方法内、方法形参、构造器内、构造器形参、代码块内)

?

方法的重写

什么是方法的重写(override 或 overwrite)?

子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作.

// 父类
class Circle{
public double findArea(){}//求面积
}
// 子类
class Cylinder extends Circle{
public double findArea(){}//求表面积
}
**********************************************
// 父类
class Account{
public boolean withdraw(double amt){}
}
// 子类
class CheckAccount extends Account{
public boolean withdraw(double amt){}
}

类的结构之三:构造器

  • 如果没显式的定义类的构造器的话,则系统默认提供一个空参的构造器
  • 定义构造器的格式:权限修饰符 类名(形参列表){ }
  • 一个类中定义的多个构造器,彼此构成重载
  • 一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
  • 一个类中,至少会有一个构造器

    ?

?首先创建一个Weapon类

public class Weapon {

    private String code; //武器的代号

    public Weapon() {

    } //无参构造器

    public Weapon(String code) {
        this.code = code;
    } //有参构造器

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}

再创建一个Hero类

public class Hero {

    private String name; //英雄名字
    private int age; //英雄的年龄
    private Weapon weapon;  //英雄的武器

    public Hero() {
    }

    public Hero(String name, int age, Weapon weapon) {
        this.name = name;
        this.age = age;
        this.weapon = weapon;
    }

    public void attack() {
        System.out.println("年龄为" + age + "的" + name + "用" + weapon.getCode() + "攻击敌方。");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Weapon getWeapon() {
        return weapon;
    }

    public void setWeapon(Weapon weapon) {
        this.weapon = weapon;
    }
}

最后DemoMain类

public class DemoMain {
    public static void main(String[] args) {
        //创建一个英雄角色
        Hero hero = new Hero();
        //为英雄起一个名字
        hero.setName("盖伦");
        hero.setAge(20);

        //创建一个武器对象
        Weapon weapon = new Weapon("多兰剑");
        hero.setWeapon(weapon);
        hero.attack();
        //年龄为20的盖伦用多兰剑攻击敌方。
    }
}

JAVA中成员变量和局部变量

public class Outer {

    int num =10; //外部类的成员变量

    public class Inner {

        int num = 20;//内部类的成员变量

        public void methodInner() {
            int num = 30; //内部类方法的局部变量
            System.out.println(num); //局部变量,就近原则30
            System.out.println(this.num);//内部类成员变量20
            System.out.println(Outer.this.num); //外部类的成员变量

        }

    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 10:40:31  更:2021-09-05 10:40:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:34:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码