java的类class 和对象object
java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样。而
一个源文件中只能有一个public的类,类名的首字母通常为大写。
使用public修饰的类可以被外部程序使用,而不使用public修饰的类则不能被外部程序使用。
类中定义的变量,可以称为类的‘’属性property‘’,或‘’成员变量member variable'。
通过类可以自定义新的变量类型。这种新的自定义类型与数组类似,只是其成员的类型可以是各种不同的
基本或非基本类型,而不必像数组所有成员的类型都一致。
例如定义新类型book。
public class Book {
String bookName ;//书名
String firstAuthor;//书的第一作者
String authors;//书的其他作者
int bookNumber;//书的页数
int bookSize;//书是多大的,例如32开,16开等
String language;//书的语言
}
定义完了就可以在其他的程序中使用Book这种类型。
可先声明一个Book变量:Book math1; 再创建一个Book对象赋值给Book变量:math1=new Book()。
然后就可以使用math1这个Book变量了:math1.bookName="飞屋环球记";math1.bookNumber=56;
对于在另一个类中调用Book类时,默认情况下,类和类中使用的其他类的源文件要放在同一个目录下。若在其他文件夹中
也可在代码中注明路径。
java编译器会在找不到 .class文件但可以找到源文件的情况下,会自动对源文件(.java文件)进行编译并使用
产生出来的.class文件。
引用外部的类,创建类对象object赋值给一个已声名的引用reference,reference只是指向某个具体的object
的索引而已。所以一个object可以有多个reference,reference的性质同数组名,object的性质同数组元素。
如下创建的类BookShelf中science1和position都是引用,java会为每一个创建的对象赋初值。
package BookShelf;
import Book.Book;
public class BookShelf {
Book science1;
String position;
int floors;
}
当创建一个BookShelf对象时,引用的初始值为null,整型默认值为0.
public class library1 {
public static void main(String[] args){
BookShelf geography;
geography = new BookShelf();
System.out.println(geography.science1);
System.out.println(geography.position);
System.out.println(geography.floors);
}
上述输出结果为:
null
null
0
当引用的值为null时,表示该引用目前不指向任何的对象,当使用值为null的引用时,就是在访问一个不存在
的东西,这时会出现错误.
定义类时,可以为其赋初值
public class BookShelf {
Book science1=new Book();
String position="block 2";
int floors=4;
}
如上对BookShelf的属性science1、position、floors都进行了赋初值,这样在其他程序里定义BoolShelf对象时
其各属性的初始值如下:
public static void main(String[] args){
BookShelf geography;
geography = new BookShelf();
System.out.println(geography.science1);
System.out.println(geography.position);
System.out.println(geography.floors);
System.out.println(geography.science1);
geography.science1=new Book();
System.out.println(geography.science1.bookName);
}
输出结果为:
Book.Book@15db9742
block 2
4
Book.Book@15db9742 //这应该表示对象中属性Book.Book的地址
道德经
在定义类时,可以自己引用自己,例:
public class Book {
String bookName="道德经" ;//书名
String firstAuthor="";//书的第一作者
String authors="朱熹";//书的其他作者
int bookNumber=5;//书的页数
int bookSize=16;//书是多大的,例如32开,16开等
String language="chinese";//书的语言
Book firstPublication;
但是,在类Book中若为firstPublication附初值new Book(),则会造成死循环,出现错误:StackOverflowError.
java的类class 和对象object的更多相关文章
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- java synchronized类锁,对象锁详解(转载)
觉得还不错 留个记录,转载自http://zhh9106.iteye.com/blog/2151791 在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看 ...
- Java面试之基础题---对象Object
参数传递:Java支持两种数据类型:基本数据类型和引用数据类型. 原始数据类型是一个简单的数据结构,它只有一个与之相关的值.引用数据类型是一个复杂的数据结构,它表示一个对象.原始数据类型的变量将该值直 ...
- 【python系统学习13】类(class)与对象(object)
目录: 类(class)和实例 类 实例 小测试 对象(object) 属性和方法 类的创建 伪代码 示例代码 属性(attribute) 方法(method) 类的实例化 实例对象调用类属性和方法 ...
- Java的类锁、对象锁和方法锁
在Java中,对于synchronized关键字,大家看到的第一反应就是这个关键字是进行同步操作的,即得名"同步锁". 当用它来修饰方法和代码块时,默认当前的对象为锁的对象,即对象 ...
- java匿名类和匿名对象及this的其他用法
/* 匿名内部类:就是内部类的简写格式. 必须前提:内部类必须继承或者实现一个类或者接口. 匿名内部类其实就是一个匿名 子类对象. 格式:new 父类对象 or 接口(){ 子类内容:(覆盖父类的, ...
- Java工具类 通过ResultSet对象返回对应的实体List集合
自从学了JDBC用多了像一下这种代码: List<xxx> list = new Array<xxx>(); if(rs.next()){ xxx x = new xxx(); ...
- 第六章 类(Class) 和对象(Object)
一.笔记导图 二.实例代码: public class PrintCarStatus{ public static void main(String[] args){ int speed; Strin ...
- Java自学-类和对象 类属性
Java的类属性和对象属性 当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性 当一个属性被声明成类属性,那么所有的对象,都共享一个值 与对象属性对比: 不同对象的 对象属性 的值都可能 ...
随机推荐
- (转)C# Stopwatch详解
C# Stopwatch类 命名空间:System.Diagnostics; namespace System.Diagnostics { // 提供一组方法和属性,可用于准确地测量运行时间. pub ...
- spring ----> aop测试需要的Maven依赖/测试时发生的一个exception
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...
- 11月26日 用seed,预加载种子文件; Case 条件语句。网址的参数如何传递,; Query--自定义scopes
在seed文件中输入一些预加载的种子job,注意属性和值都要有: ❌错误,我输入contact_email的时候value值是空的,这样不能正确生成. 正确✅: for i in 1..10 do ...
- 数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤)
数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤) map()方法返回一个由原数组中每一个元素调用一个指定方法后返回的新数组 reduce()方法接受一个函数作 ...
- 启动mysql5.7异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
异常表现 mysql5.7启动时报错 Starting MySQL...The server quit without updating PID file [FAILED]sql/data/insta ...
- python基础之数据类型操作补充,集合及其操作,深浅拷贝
内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...
- python记录_day10 动态传参 命名空间 作用域
一.动态传参 动态传参用到 *args 和 **kwargs ,*号表示接收位置参数,args是参数名:**表示接收关键字参数,kwargs是参数名 def chi(*food): print(foo ...
- php 常用函数总结
1. is_numeric() // 判断变量是不是数字或者数字字符串 2. array_column() // 获取某一列 3. array_search() // array_search(val ...
- 第一阶段——站立会议总结DAY09
1.昨天做了什么:未做. 2.今天准备做什么:准备将之前讲的东西,要付诸实践.所以,为了使界面更加耐看,向微信,QQ这样的看齐,查一查个人中心界面中间的条条框框的实现代码,借鉴,并运用到自己的代码上. ...
- k8s相关端口表-以及周边工具
k8s端口 kube-api 6443 kube-controller-manager 10252 kube-scheduler 10251 kubelet 10250 kube-proxy 1025 ...