首页 > 编程语言 >Java面向对象1

Java面向对象1

时间:2022-12-14 12:55:33浏览次数:68  
标签:Java name Person 对象 age per2 面向对象 per1

 

程序的发展阶段

程序的发展经历了两个主要阶段:面向过程、面向对象

对于面向对象与面向过程可以用一个例子解释,如一个木匠要做一个盒子,那么做这个盒子的出发点会有两种方式。

面向对象:先想好要做的盒子,之后再去找相应的工具去做。

面向过程:不去想要做什么样的盒子,随需取用工具。

 

面向对象的三大特征

 

1.封装(Encapsulation)

对外部不可见

2.继承(Inheritance)

扩展类的功能

3.多态(Polymorphism)

方法的重载

对象的多态性

类与对象

类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

类就相当于是一个模板,依照此模板产生产品。

类的定义

 

 

 

 

创建person类

class Person{

String name;

int age;

public void tell(){

System.out.println("姓名:" + name + ",年龄:" + age);

}

}

Person类图

所示的图形分为三个层次:

第一层表示类的名称,类的名称与之前一样要求开头首字母大写;

第二层表示属性的定义,按照“访问权限 属性名称:属性类型”的格式定义;

第三层表示类中方法的定义,按照“访问权限 方法名称():方法返回值”的格式定义。

 

 

 

 

对象的创建及使用

类名 对象名称 =  null ;// 声明对象

对象名称 = new 类名() ;// 实例化对象

或者

类名 对象名称 = new 类名() ;

class Person {

String name;

int age;

public void tell() {

System.out.println("姓名:" + name + ",年龄:" + age);

}

}

public class ClassDemo02 {

public static void main(String args[]){

Person per = new Person() ;

}

}

访问类中的属性和方法

访问属性:对象名称.属性名

访问方法:对象名称.方法名()

class Person {

String name;

int age;

public void tell() {

System.out.println("姓名:" + name + ",年龄:" + age);

}

}

public class ClassDemo03 {

public static void main(String args[]){

Person per = new Person() ;

per.name = "张三" ; // 为属性赋值

per.age = 30 ;

per.tell() ; // 调用类中的方法

}

}

 

 

内存划分

内存划分:对象创建之初

public class ClassDemo02 {

public static void main(String args[]){

Person per = new Person() ;

}

}

 

 

 

内存操作:为属性赋值

public class ClassDemo03 {

public static void main(String args[]){

Person per = new Person() ;

per.name = "张三" ; // 为属性赋值

per.age = 30 ;

per.tell() ; // 调用类中的方法

}

}

 

 

 

声明多个对象

 public class ClassDemo04 {

public static void main(String args[]) {

Person per1 = null;// 声明per1对象

Person per2 = null;// 声明per2对象

per1 = new Person();// 实例化per1对象

per2 = new Person();// 实例化per2对象

per1.name = "张三";// 设置per1对象的name属性内容

per1.age = 30;// 设置per1对象的age属性内容

per2.name = "李四";// 设置per2对象的name属性内容

per2.age = 33;// 设置per2对象的age属性内容

System.out.print("per1对象中的内容 --> ") ;

per1.tell();// per1调用方法

System.out.print("per2对象中的内容 --> ") ;

per2.tell();// per2调用方法

}

}

 

 

 

 

 

 

内存划分

 

 

 

对象引用传递

public class ClassDemo05 {

public static void main(String args[]) {

Person per1 = null;// 声明per1对象

Person per2 = null;// 声明per2对象

per1 = new Person();// 只实例化per1一个对象

per2 = per1 ;// 把per1的堆内存空间使用权给per2

per1.name = "张三";// 设置per1对象的name属性内容

per1.age = 30;// 设置per1对象的age属性内容

// 设置per2对象的内容,实际上就是设置per1对象的内容

per2.age = 33;

System.out.print("per1对象中的内容 --> ") ;

per1.tell();// 调用类中的方法

System.out.print("per2对象中的内容 --> ") ;

per2.tell();

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

引用传递内存图

 

 

 

 

 

垃圾产生

public class ClassDemo06 {

public static void main(String args[]) {

Person per1 = null;// 声明一个per1对象

Person per2 = null;// 声明一个per2对象

per1 = new Person();// 实例化per1对象

per2 = new Person();// 实例化per2对象

per1.name = "张三";// 设置per1的name属性内容

per1.age = 30;// 设置per1的age属性内容

per2.name = "李四" ;// 设置per2的name属性内容

per2.age = 33;       // 设置per2的age属性内容

per2 = per1;// 将per1的引用传递给per2

System.out.print("per1对象中的内容 --> ") ;

per1.tell();// 调用类中的方法

System.out.print("per2对象中的内容 --> ") ;

per2.tell();

}

}

 

 

 

垃圾产生的内存关系

 

 

 

 

 

 

 

 

 

 

 

Java面向对象--类和对象

  1. 类和对象

程序是用来解决现实问题的,要解决现实问题,就需要将现实中的各种事物在程序中模拟出来。上帝创造了人,我创造了我的程序,我就是我程序中各个对象(事物)的上帝。程序中的各种事物都由我创造。

后续我们所有的程序都是有各种各样的事物构成的。每个事物都有其特定的作用,我们将这些事物有机组合起来就构成了我们的程序。

  1. 创建各种具有特定功能的事物(java中将事物又称为对象)。
  2. 将各事物有机组合

(1) 现实中创造事物流程

① 构想事物的特征(长什么样子、可以完成什么动作):静态特征、动态特征。

② 将所构想的事物的特征画到设计图纸上。

③ 将图纸送到生产车间开始生产

④ 所构想事务生产出来。

(2) 程序中事物创建流程

步骤

现实

程序

1

静态特征、动态特征

属性、行为(方法)

2

设计图纸

类:图纸,模板

3

生产车间

new

4

事物

对象

 

(3) 实例

静态特征、动态特征

名字、年龄、颜色   |    吃饭、说话

静态特征、动态特征=》类图

 

Cat

String   name

int   age

String   color

eat()

speak()

 

 

类图=》类

public class Cat {

    //属性

String name;

int age;

String color;

//行为

public void eat(){

System.out.println("我是只猫,我喜欢吃鱼");

}

 

public void speak(){

System.out.println("我的名字是:"+name+"  我的年龄是:"+age);

}

}

 

创建对象

Cat cat=new Cat();

对象使用

Cat cat=new Cat();

cat.name=”小花”;

cat.age=10;

cat.color=”黄色”;

cat.speak();

 

以某个类为模板创建的对象:

  1. 所有对象拥有自己独立的属性
  2. 所有对象共享一份方法

 

 

属性作用:存储信息,如果对象一直存在,还可通过对象将属性内部存储的信息传递到别的地方。

方法作用:一段具有特定功能的代码

 

 

总结:

  1. 要调用某个对象的某个属性,可以通过:对象.属性名   来调用。
  2. 要调用某个对象的某个方法,可以通过:对象.方法名   来调用。
  3. 不同的对象调用各自独立的属性,但是调用的方法是共享的
  4. 对象的属性可以用来存储信息。如果将信息存储到对象之后,只要对象不消亡,那么对象还可以传递信息。
  5. 对象的方法可以执行某些特定操作。

程序的发展阶段

程序的发展经历了两个主要阶段:面向过程、面向对象

对于面向对象与面向过程可以用一个例子解释,如一个木匠要做一个盒子,那么做这个盒子的出发点会有两种方式。

面向对象:先想好要做的盒子,之后再去找相应的工具去做。

面向过程:不去想要做什么样的盒子,随需取用工具。

 

面向对象的三大特征

 

1.封装(Encapsulation)

对外部不可见

2.继承(Inheritance)

扩展类的功能

3.多态(Polymorphism)

方法的重载

对象的多态性

类与对象

类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

类就相当于是一个模板,依照此模板产生产品。

类的定义

 

 

创建person类

class Person{

String name;

int age;

public void tell(){

System.out.println("姓名:" + name + ",年龄:" + age);

}

}

Person类图

所示的图形分为三个层次:

第一层表示类的名称,类的名称与之前一样要求开头首字母大写;

第二层表示属性的定义,按照“访问权限 属性名称:属性类型”的格式定义;

第三层表示类中方法的定义,按照“访问权限 方法名称():方法返回值”的格式定义。

 

 

对象的创建及使用

类名 对象名称 =  null ;// 声明对象

对象名称 = new 类名() ;// 实例化对象

或者

类名 对象名称 = new 类名() ;

class Person {

String name;

int age;

public void tell() {

System.out.println("姓名:" + name + ",年龄:" + age);

}

}

public class ClassDemo02 {

public static void main(String args[]){

Person per = new Person() ;

}

}

访问类中的属性和方法

访问属性:对象名称.属性名

访问方法:对象名称.方法名()

class Person {

String name;

int age;

public void tell() {

System.out.println("姓名:" + name + ",年龄:" + age);

}

}

public class ClassDemo03 {

public static void main(String args[]){

Person per = new Person() ;

per.name = "张三" ; // 为属性赋值

per.age = 30 ;

per.tell() ; // 调用类中的方法

}

}

 

 

内存划分

内存划分:对象创建之初

public class ClassDemo02 {

public static void main(String args[]){

Person per = new Person() ;

}

}

 

内存操作:为属性赋值

public class ClassDemo03 {

public static void main(String args[]){

Person per = new Person() ;

per.name = "张三" ; // 为属性赋值

per.age = 30 ;

per.tell() ; // 调用类中的方法

}

}

 

声明多个对象

 public class ClassDemo04 {

public static void main(String args[]) {

Person per1 = null;// 声明per1对象

Person per2 = null;// 声明per2对象

per1 = new Person();// 实例化per1对象

per2 = new Person();// 实例化per2对象

per1.name = "张三";// 设置per1对象的name属性内容

per1.age = 30;// 设置per1对象的age属性内容

per2.name = "李四";// 设置per2对象的name属性内容

per2.age = 33;// 设置per2对象的age属性内容

System.out.print("per1对象中的内容 --> ") ;

per1.tell();// per1调用方法

System.out.print("per2对象中的内容 --> ") ;

per2.tell();// per2调用方法

}

}

 

 

 

 

 

 

内存划分

 

对象引用传递

public class ClassDemo05 {

public static void main(String args[]) {

Person per1 = null;// 声明per1对象

Person per2 = null;// 声明per2对象

per1 = new Person();// 只实例化per1一个对象

per2 = per1 ;// 把per1的堆内存空间使用权给per2

per1.name = "张三";// 设置per1对象的name属性内容

per1.age = 30;// 设置per1对象的age属性内容

// 设置per2对象的内容,实际上就是设置per1对象的内容

per2.age = 33;

System.out.print("per1对象中的内容 --> ") ;

per1.tell();// 调用类中的方法

System.out.print("per2对象中的内容 --> ") ;

per2.tell();

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

引用传递内存图

 

 

 

 

 

垃圾产生

public class ClassDemo06 {

public static void main(String args[]) {

Person per1 = null;// 声明一个per1对象

Person per2 = null;// 声明一个per2对象

per1 = new Person();// 实例化per1对象

per2 = new Person();// 实例化per2对象

per1.name = "张三";// 设置per1的name属性内容

per1.age = 30;// 设置per1的age属性内容

per2.name = "李四" ;// 设置per2的name属性内容

per2.age = 33;       // 设置per2的age属性内容

per2 = per1;// 将per1的引用传递给per2

System.out.print("per1对象中的内容 --> ") ;

per1.tell();// 调用类中的方法

System.out.print("per2对象中的内容 --> ") ;

per2.tell();

}

}

 

 

 

垃圾产生的内存关系

 

 

 

标签:Java,name,Person,对象,age,per2,面向对象,per1
From: https://www.cnblogs.com/YZTL/p/16981764.html

相关文章

  • 50个Java面试必问的面试题,我都给你整好了
    ​我们整理了一份主要的Angular面试问题清单,分为三部分:角度面试问题–初学者水平角度面试问题–中级角度面试问题–高级初学者水平–面试问题1.区分Angular和Angula......
  • java中的方法重写
    本文主要讲述java中方法重写的细节代码结构如图:Animal类:publicclassAnimal{privateStringname;protectedintage;intweight;private......
  • Java性能调优System的gc垃圾回收方法
    java性能调优System的gc垃圾回收方法java性能调优System的gc垃圾回收方法示例解一、什么是System.gc()?​​System.gc()​​是用Java,C#和许多其他流行的高级编程语言提供的API......
  • Java中ArrayList同步的2种方法分享
    Java中ArrayList同步的2种方法分享​​arrayList​​ 的实现是默认不同步的。这意味着如果一个线程在结构上修改它并且多个线程同时访问它,它必须在外部同步。结构修改意味......
  • 利用CSS、JavaScript及Ajax实现图片预加载的三大方法
    预加载图片是提高用户体验的一个很好方法。图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度。这对图片画廊及图片占据很大比例的网站来说......
  • 24_Java网络编程
    Java_网络编程一、网络编程入门友情提示使用网络编程代码时,注意连接网络的变化(IP地址会变),可能不注意的话导致无法正确运行stocket:套接字1、网络编程......
  • 新装Eclipse运行Java程序报错Exception in thread "main" java.lang.UnsupportedClass
    错误现象:  Exceptioninthread"main"java.lang.UnsupportedClassVersionError:views/LoginFramehasbeencompiledbyamorerecentversionoftheJavaRunt......
  • Java Object转实体(自用)
    JavaObject转实体一、遇到的问题在从RedisHash根据一些条件(类似*|0)查询对应的HashValue时,发现在Java里获取RedisHash中的Value其实是字符串的形式。我尝试使用了fa......
  • Java复习笔记-抽象、接口、内部类、枚举
    1抽象abstractclass类名{//方法(实现的,抽象方法)//属性}1.1抽象类的细节1).抽象类不能被实例化2).可以有不是抽象的......
  • java和ssm开发的经销系统
    简介Ssm服装经销系统,主要分为6个角色:管理员、资料员、采购员、仓库员、售卖员、财务。采购员进行采购入库;仓库员进行采购入库、退货入库、提货出库、折损出库等库存管理;售卖......