day05 面向对象 如若有错还望指教
来源:互联网 发布:生物信息学数据分析 编辑:程序博客网 时间:2024/06/05 20:07
1.面向对象设计思想:
补:万事万物都是对象 (对象=属性(attribute) + 行为(method))
2.类(class) 和 对象(Object)
a.类是对现实生活中一类具有共同特征的事物的抽象。(类构成由属性和方法[class中有什么(属性和方法)])
类的实质是一种数据类型,因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实 例化为对象时,才会变得可操作。
补:类是用来描述同一类型对象的一个抽象概念,类中的对象具有相同的属性和行为
类是同一类型对象的模板;对象是类的一个具体实例
一个class类可以实例化多个Object对象实例
怎么创建一个对象
例子: Girl girl=new Girl();
b.怎么定义类?
修饰词]class 类名 [extends 父类名][implements 接口名1,接口名2…]{
//部分1:类的成员变量(即属性)
//部分2:类的构造方法
//部分3:类的方法(即行为)
//…
}
3.方法
软件编程语言中,如果将函数定义为类定义的一部分,或者将它与某个对象绑定,则该函数称为方法。
c.语法:
<访问控制符><返回类型><方法名>([<参数列表>])[throws <异常…>]{
<代码块>
}
返回类型被定义为void该方法体可以没有return语句;
如果返回值类型不是void,则必须有return语句
d.构造方法:
构造方法就是类构造对象时调用的方法,主要用来实例化对象,就像一个对象加工厂
如果类中定义了构造方法,系统就不会默认的无参构造方法了 ,如果要使用无参构造方法,需要亲自定义一个无参构造方法
4.成员变量 和 局部变量区别
成员变量:
1、成员变量定义在类中,在整个类中都可以被访问。
2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
3、成员变量有默认初始化值。
局部变量:
1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
3、局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找
5.引用类型:
由类型的实际值引用(类似于指针)表示的数据类型
Date d ;//定义一个Date类型的引用变量
d = new Date(); //使用new创建一个时间对象
占用两个内存块
6.方法重载:
public Person(String name) {
this.name= name;
}
public Person(String name, int age){
this.name = name;
this.age = age;}
堆:存储的全部是对象,每个对象都包含一个与之对应的class的信息,.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
栈:每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问,栈区的空间是自动连续分配
方法区:又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量,方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
上图的代码
package com.obj;
import java.util.Date;
public class Student {
String stuNo;
String name;
String sex ;
int age;
int weight;
int height;
Date birthday;
public static void main(String[] args) {
Student stu1 = new Student();//创建了一个学生对象
//int num = 10;
//String s = "abc";
stu1.stuNo = "1707001";
stu1.name = "jim";
stu1.sex = "男";
stu1.age = 23;
stu1.weight = 70;
stu1.height = 178;
stu1.birthday = new Date();
System.out.println(stu1);
//Student stu = stu1;
stu1 = null;
stu1.study(stu1.name);
Student stu2 = new Student();//创建了一个学生
stu2.stuNo = "1707002";
stu2.name = "Lucy";
stu2.sex = "女";
stu2.age = 21;
stu2.weight = 52;
stu2.height = 167;
stu2.birthday = new Date();
stu2.study(stu2.name);
}
public void study(String name){
System.out.println(name + "非常爱学习!!!");
}
public void eat(){
}
}
- day05 面向对象 如若有错还望指教
- day05--面向对象--String类
- day05--Java面向对象复习
- day05--面向对象--各种类
- 还望高手指教
- Day05第五天java基础----------面向对象
- 黑马程序员-Java面向对象-day05
- 黑马程序员-day05-面向对象(基本概念)
- 黑马程序员-day05-面向对象(封装 Encapsulation)
- 黑马程序员-day05-面向对象(构造函数)
- 黑马程序员-day05面向对象一
- day05--Java面向对象复习--Exception异常
- 黑马程序员--面向对象(day05)
- day01 如有错误还望指教
- 黑马程序员——day05面向对象(一)
- 黑马程序员-day05-面向对象(this关键字和super关键字)
- day05--Java面向对象复习--Java常用类
- python学习之路-基础篇-面向对象-day05
- Shell系列—Shell 输入/输出重定向
- XZ_iOS之崩溃信息的查看,调用堆栈的调试技巧
- 四种途径将HTML5 web应用变成android应用
- UILabel删除线不显示
- markdown语法
- day05 面向对象 如若有错还望指教
- iOS10富文本推送--NotificationContentExtension
- 大小不固定的图片和多行文字的垂直水平居中
- Codeforces Round #385 (Div. 2) 745A Hongcow Learns the Cyclic Shift
- 数据库分库分表(sharding)系列——全局主键生成策略(3)
- cookies,sessionStroage和localStorage的区别
- 欢迎使用CSDN-markdown编辑器
- Android线程池解析
- Java中的基本类型和引用类型变量的区别