【java】关于java类和对象,你想知道的在这里!
java类的基本组成
class Myclass {
field1... // 声明实例变量(实例域)
field2... // 声明实例变量(实例域)
constructor.. // 构造函数
getMethod1.. // 访问器方法1
getMethod2.. // 访问器方法2
setMethod1... // 更改器方法1
setMethod2... // 更改器方法2
}
public class Myclass {
private String name; // 声明实例变量(实例域)
public Myclass () { // 构造函数
name = "尚无名字";
}
public String getName () { // 访问器方法
return name;
}
public void setName (String str) { // 更改器方法
name = str;
}
}
public class Test {
public static void main(String args []) {
Myclass instance = new Myclass();
System.out.println(instance.getName()); // 输 出当前的实例变量name的值
instance.setName("彭湖湾"); // 修改name的值
System.out.println(instance.getName()); // 再次输 出实例变量name的值
}
}
尚无名字
彭湖湾
函数重载
根据参数类型不同进行重载
public class People {
public void print (String str) {
System.out.println("我调用了参数类型为String的方法!");
System.out.println(str);
}
public void print (int number) {
System.out.println("我调用了参数类型为int的方法!");
System.out.println(number);
}
}
public class Test {
public static void main(String args []) {
People people1 = new People();
people1.print("字符串");
}
}
我调用了参数类型为String的方法!
字符串
People people1 = new People();
people1.print();
结果
我调用了参数类型为int的方法!
根据参数个数不同进行重载
public class People {
public void print (String str) {
System.out.println("我调用了一个参数的方法!");
}
public void print (String str1, String str2) {
System.out.println("我调用了两个参数的方法!");
}
}
public class Test {
public static void main(String args []) {
People people1 = new People();
people1.print("参数1", "参数2");
}
}
我调用了两个参数的方法!
public static void main(String args []) {
People people1 = new People();
people1.print("参数");
}
我调用了一个参数的方法!
构造函数重载
实例变量的默认值,和初始化实例变量
boolean false
char '/uoooo'(null)
byte (byte)
short (short)
int
long (L)
float 0.0 (f)
double 0.0 (d)
public class Default {
private int number;
private float f;
private boolean bool;
private char c;
private byte b;
public void printDefaultValues () {
System.out.println("int的默认值:" + number);
System.out.println("float的默认值:" + f);
System.out.println("boolean的默认值:" + bool);
System.out.println("char的默认值:" + c);
System.out.println("byte的默认值:" + b);
}
}
public class Test {
public static void main(String args []) {
Default default1 = new Default();
default1.printDefaultValues();
}
}
int的默认值:
float的默认值:0.0
boolean的默认值:false
char的默认值:
public class Default {
private int number = ;
}
访问私有实例变量
实例访问
public class People {
private String name;
public People (String aName) {
name = aName;
}
public String getName () {
return name;
}
}
public class Test {
public static void main(String args []) {
People people1 = new People("彭湖湾");
System.out.println(people1.name); // 直接通过People的实例对象访问name私有变量
}
}
public class Test {
public static void main(String args []) {
People people1 = new People("彭湖湾");
System.out.println(people1.getName());
}
}
彭湖湾
类内访问
public class People {
private String name;
public People (String aName) {
name = aName;
}
public boolean equalName (People other) {
String otherName = other.name; // 访问另一个对象的私有的name变量
return name.equals(otherName);
}
}
public class Test {
public static void main(String args []) {
People people1 = new People("彭湖湾");
People people2 = new People("XXX");
People people3 = new People("彭湖湾");
System.out.println(people1.equalName(people2));
System.out.println(people1.equalName(people3));
}
}
false // 说明people1和people2的name值不相等
true // 说明people1和people3的name值相等
实例变量和局部变量“交锋”
public class People {
private String name;
public People (String aName) {
name = aName; // 隐式访问实例变量
}
}
public class People {
private String name;
public People (String aName) {
this.name = aName; // 显式访问实例变量
}
}
public class People {
private String name ="实例name变量";
public People (String name) {
System.out.println("输出:" + name); //在构造函数中这样做有些怪异,但为了展示请不要介意
}
}
public class Test {
public static void main(String args []) {
People people1 = new People("局部name变量");
}
}
运行后打印
输出:局部name变量
// 无效的写法!
public class People {
private String name
public People (String name) {
name = name; // 两个都取局部变量this,当然无效了
}
}
public class People {
private String name
public People (String aName) {
name = aName;
}
}
public class People {
private String name;
public People (String name) {
this.name = name;
}
public String getName () {
return this.name;
}
}
静态变量和静态方法
public static int peopleTotal = ; // 这里设为public只是为了演示
public class People {
private String name;
public static int peopleTotal = ; // 这里设为public只是为了演示
public People (String name) {
this.name = name;
peopleTotal++; // 每次调用构造函数时候,使得类的peopleTotal静态变量加1
}
}
Test.java:
public class Test {
public static void main(String args []) {
// 创建三个People对象
People people1 = new People("one");
People people2 = new People("tow");
People people3 = new People("three");
System.out.print(People.peopleTotal); // 输出此时的peopleTotal
}
}
通过静态方法访问静态变量
public static int getPeopleTotal
public class People {
private String name;
private static int peopleTotal = ; // 和上面的例子不同,这里的静态变量是私有的
public People (String name) {
this.name = name;
peopleTotal++; // 每次调用构造函数时候,使得类的peopleTotal静态变量加1
}
public static int getPeopleTotal () {
return peopleTotal; // 通过静态方法访问私有静态变量
}
}
public class Test {
public static void main(String args []) {
People people1 = new People("one");
People people2 = new People("tow");
People people3 = new People("three");
System.out.print(People.getPeopleTotal()); // 输出peopleTotal
}
}
对象能够访问静态变量和静态方法吗?
// 虽然能达到相同效果但不要这么做!!
Test.java
public class Test {
public static void main(String args []) {
People people1 = new People("one");
People people2 = new People("tow");
People people3 = new People("three");
System.out.print(people1.getPeopleTotal()); // 用people1对象调用了静态方法
}
}
类内定义的实例方法能访问静态变量吗?
// 虽然能达到相同效果但不要这么做!!
People.java:
public class People {
private String name;
private static int peopleTotal = ;
public People (String name) {
this.name = name;
peopleTotal++; // 每次调用构造函数时候,使得类的peopleTotal静态变量加1
}
public int getPeopleTotal () {
return peopleTotal; // 通过实例方法访问私有静态变量
}
}
public class Test {
public static void main(String args []) {
People people1 = new People("one");
People people2 = new People("tow");
People people3 = new People("three");
System.out.print(people1.getPeopleTotal()); // 用people1对象调用了实例方法!!
}
}
main方法

public class TestMain {
public static void main(String args[]){
System.out.println("打印main方法中的输入参数!");
for(int i=;i<args.length;i++){
System.out.println(args[i]);
}
}
}
D:\Study\basetest\src>javac TestMain.java
D:\Study\basetest\src>java TestMain
打印main方法中的输入参数!
【java】关于java类和对象,你想知道的在这里!的更多相关文章
- Java学习笔记十三:Java中的类和对象
Java中的类和对象 一:什么是对象: 总的来说就是"万物皆对象",客观存在的事物皆为对象.是计算机所关注的具体信息. 对象(object)是一件事.一个物体.一个名词,或可以获得 ...
- Java 反射 分析类和对象
Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- Java自学-面向对象 类和对象
Java中的类和对象 引入面向对象的基本概念 假设,我们要设计一个LOL这样的游戏,使用面向对象的思想来设计,应该怎么做? 步骤 1 : 设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必 ...
- Java程序设计基础笔记 • 【第7章 Java中的类和对象】
全部章节 >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...
- java面向对象之 类和对象
OOP:Object Oriented Programming(面向对象编程) 面向对象: 1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在 ...
- Java面向对象(一) 类和对象
一.软件开发进化史 摘自<从零开始学架构> 机器语言(1940年) 最早的软件开发使用的是“机器语言”,直接使用二进制码0和1来表示机器可以识别的指令和数据. 汇编语言(20世纪40年代) ...
- java中的类和对象
Java中的类是一个模板,它用于描述一类对象的行为和状态. 对象则是类中的一个实例,对象有状态(属性)和行为(方法).例如一条狗就是一个对象,他的状态就是他的颜色,名字,品种:他的行为就是叫,摇尾巴, ...
- Java反射获取类和对象信息全解析
反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题. 在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了. 获取类对象 Class.f ...
- Java 1.0 类与对象
1.Java中main()的作用: a.测试真正的类 b.启动Java应用程序 2. Java程序只会让对象与对象交互 3.创建对象时存储在堆中,自动回收. 4.Java无全局变量 5.Java程序由 ...
随机推荐
- HDU字符串基础题(1020,1039,1062,1088,1161,1200,2017)
并不是很精简,随便改改A过了就没有再简化了. 1020. Problem Description Given a string containing only 'A' - 'Z', we could ...
- 扩展Python模块系列(一)----开发环境配置
本系列将介绍如何用C/C++扩展Python模块,使用C语言编写Python模块,添加到Python中作为一个built-in模块.Python与C之间的交互目前有几种方案: 1. 原生的Python ...
- jQuery.Gantt
使用jQuery.Gantt过程中,遇到的问题!
- Ubuntu无法访问windows分区
正常情况: 重启, 先进入windows, 再重启进入Ubuntu(一定是重启, 先关机再进Ubuntu没用). 异常情况: sudo ntfsfix /dev/sda5(或6或7,得看哪个盘无法访问 ...
- Linux学习总结(十三)—— CentOS用户组管理:创建用户组、修改用户组、删除用户组
文章首发于[博客园-陈树义],请尊重原创保留原文链接. 在Linux系统里,有两个系统文件与用户组密切相关,它们分别是:/etc/group./etc/gshadow. /etc/group:存储了用 ...
- 删除多余的win10软件
第一步:开始→所有程序→WindowsPowershell→然后右键以管理员方式运行 全部应用: Get-AppxPackage | Remove-AppxPackage 计算器: Get-AppxP ...
- java api1.8中文版(由谷歌,百度,有道,必应翻译).md
大家如果想看java1.8 的中文api可以点击我下面提供的链接,同时感谢把这些资源放到网上供我们学习的朋友,废话不说了下面就是链接: java 1.6 帮助文档 中文 链接:http://downl ...
- Wdatepicker日期控件的使用指南 (转)
Wdatepicker日期控件的使用指南 标签: inputclass语言functionstring正则表达式 2012-02-10 15:48 40826人阅读 评论(5) 收藏 举报 .embo ...
- Json-Server模拟数据接口开发
前端开发过程中调用后台接口是常事,在前后台定义好接口规范和参数后,后台接口的进度有时会成为我们的掣肘,这里推荐使用一款简单的小工具json-server,小而轻便. 确保本地已有node环境. 一:安 ...
- oracle撤销表空间和回滚段
/* 撤销表空间 */ 通过使用撤销技术,能够为Oracle数据库提供以下功能: * 使用ROLLBACK语句撤销事务 * 进行数据库恢复 * 提供数据的读一致性 Oracle强烈建议DBA在Orac ...