【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程序由 ...
随机推荐
- 度度熊与邪恶大魔王 DP | 完全背包
Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...
- 自定义Git之使用centos搭建git 服务器
Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用. 接下来我们将以 Centos 为例搭建 Git 服务器. 1 ...
- 关于Wifi室内定位应用中的一些问题:
公司目前在办公室内布设了一套室内定位的实验环境,用的是华为路由器,采用的算法是基于信号强度的RSSI算法.公司目前希望能使用这套设备得到无线网络覆盖范围下的所有移动设备(对应每个人)的MAC地址,同时 ...
- 安徽省2016“京胜杯”程序设计大赛_D_梯田AGAIN
梯田AGAIN Time Limit: 5000 MS Memory Limit: 65536 KB Total Submissions: 95 Accepted: 21 Description 大家 ...
- Shell curl 和 wget 使用代理IP
Linux Shell 提供两个非常实用的命令来爬取网页,它们分别是 curl 和 wget curl 和 wget 使用代理 curl 支持 http.https.socks4.socks5 wge ...
- /dev/null 2>&1解释
/dev/null 2>&1 解释 crontab内容 :50 18 5-30 * * /script/myscript.sh 1> /dev/null 2>&1 其 ...
- Windows环境下Mysql如何快速导入或恢复表为innodb的数据
注: 一.这个是对Innodb的数据恢复.MyISAM不需要这么麻烦,只要数据文件存在直接复制过去就可以. 二.该方法只适用于 1:想要恢复或者导入表的ibd文件和frm文件 2:你不仅需有ibd和f ...
- Win7系统默认的壁纸路径
Win7系统默认的壁纸路径.. ------------------- ------------------- ------------------- ------------------- ---- ...
- php ddos 安全处理代码
<?php//查询禁止IP$ip =$_SERVER['REMOTE_ADDR'];$fileht=".htaccess2";if(!file_exists($fileht) ...
- SpringBoot 注解事务声明式事务
转载请注明: http://www.cnblogs.com/guozp/articles/7446477.html springboot 对新人来说可能上手比springmvc要快,但是对于各位从sp ...