【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程序由 ...
随机推荐
- python--代码统计(进阶版)
在上一篇的随笔中发表了代码统计小程序,但是发表后,我发现,以前写的代码怎么办 写了那么多,怎么就从0开始了呢,,,,我还是个孩子啊,不能这么残忍 于是,代码统计进阶版:统计当前目录下所有指定文件类型的 ...
- 带有WS-Security验证的webservice
示例用的是spring+CXF来配置webservice 首先是web.xml配置,将spring,CXF的配置文件加载进去,由于我客户端跟服务端在同一个工程里面,所以配置文件在一块. <con ...
- Unity快速接入SDK框架
先把工程源码贴出来: 链接:http://pan.baidu.com/s/1geDhtS3 密码:i0s9 最近接android ios的SDK 已经接了10多个 有点心得 分享一下 如果有更好想法求 ...
- python学习===计算字符串中子串出现的次数。
if __name__ == '__main__': str1 = input('input a string: \n') str2 = input('input a sub string: \n') ...
- 马的遍历 洛谷 p1443
题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘的大小和马的坐标 输出 ...
- 使用bootstrap网格系统自适应盒子宽度时保持所有盒子高度一致。
使用了bootstrap网格系统的好处是很容易便实现了响应式布局,盒子可以根据设置的样式,随着屏幕的大小改变而自动改变宽度,但是也存在一个问题,那就是盒子的高度是由盒子的内容决定的,如果盒子里的内容不 ...
- HTML-JS基础 变量与输入输出 运算符 分支结构
js中的变量 1.JS中变量声明的写法: var num=10;//使用var声明的变量属于局部变量只在当前作用域内有效 num=10;//不用var声明的变量,默认为全局变量,在整个JS文件中都有效 ...
- testng相关的Annotation注释方法,
2 - Annotation这里是TestNG中用到的annotation的快速预览,还有它们的属性. @BeforeSuite: 被注释的方法将在所有测试运行前运行,方法将只运行一次@AfterSu ...
- 如何在GitHub上生成ssh公钥并用NetBeans克隆项目
一.生成ssh公钥. 1.首先判断本机是否创建了公有密钥: $ ls ~/.ssh 这个命令用于检查是否已经存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在,下面步骤可省略 ...
- 在word表格里打勾和打叉
打勾:在单元格里输入R,再将其字体设置为:Wingdings 2. 打叉:在单元格里输入T,再将其字体设置为:Wingdings 2.