学习笔记 Java类的封装、继承和多态 2014.7.10
1、问题:toString()没搞懂?
int a = 1;
Integer aa = new Integer(a); //这是实现的过程
System.out.println("Hello," + aa.toString()); //得Hello,1 int b = 1;
System.out.println("Hello," + b); //得Hello,1
class MyDate
{
int year,month,day; public int get()
{
return year;
} public static void main(String[] args)
{
MyDate d1 = new MyDate();
System.out.println(d1); //打印类名的时候。须要复写父类的toString()方法
System.out.println(d1.get()); //打印类中的方法时。不用复写。由于方法里面有自己写的返回。
}
}
2、代码:MyDate.java 通过声明MaDate类,演示类的声明格式、创建对象、引用对象成员变量、调用对象成员方法等语法。
public class MyDate { //类声明
int year, month, day; //成员变量,表示年、月、日
void set(int y, int m, int d){ //成员方法,设置日期值
this.year = y;
this.month = m;
this.day = d;
} void set(MyDate d){ //将当前对象值设为參数值,重载
set(d.year, d.month, d.day);
} public String toString(){ //返回中文日期字符串
return year + "年" + month + "月" + day + "日";
} public boolean equals(MyDate d){
return this == d || d != null && year == d.year && month == d.month && day == d.day;
//&&的优先级好像比||高。 this == d ||表示假设d1和d2引用同一个实例。那么d1和d2的值就相等,就直接返回true(this:指代调用成员方法的当前对象本身。this.year:訪问本类的成员变量和成员方法)
} public static void main(String[] args) {
MyDate d1 = new MyDate(); //声明对象、创建实例、引用赋值
d1.set(1992, 10, 13); //调用类的成员方法 MyDate d2 = d1; //对象引用赋值
System.out.println("d1:" + d1.toString() + ", d2:" + d2 + ", d1 == d2? " + (d1 == d2) + " d1.equals(d2)? " + d1.equals(d2));
//==、!=推断d1和d2是否引用同一个实例。equals()比較d1和d2的值是否相等
//为什么假设不加public String toString(),这里就会出现哈希那一坨(它怎么会去调用那个函数呢?) .toString()能够省略
//得d1:1992年10月13日, d2:1992年10月13日, d1 == d2?true d1.equals(d2)? true d2.year = 2014; //改动实例成员变量值
System.out.println("d1:" + d1 + ", d2:" + d2 + ", d1 == d2? " + (d1 == d2) + " d1.equals(d2)? " + d1.equals(d2));
//得d1:2014年10月13日, d2:2014年10月13日, d1 == d2?true d1.equals(d2)? true d2 = new MyDate(); //创建还有一个实例
d2.set(d1);
System.out.println("d1:" + d1 + ", d2:" + d2 + ", d1 == d2?" + (d1 == d2) + " d1.equals(d2)? " + d1.equals(d2));
//得d1:2014年10月13日, d2:2014年10月13日, d1 == d2?false d1.equals(d2)? true
}
}
3、代码:MyDate_Constructor.java 类的构造方法
public class MyDate_Constructor {
int year; //成员变量 public MyDate_Constructor() { //默认构造方法
// year = 1992;
this(1992); //this:调用本类已定义的构造方法
} public MyDate_Constructor(int y) { //声明构造方法。初始化成员变量
year = y;
} public MyDate_Constructor(MyDate_Constructor t) { //拷贝构造方法,创建新实例,值同參数实例
// year = t.year;
this(t.year);
} public String toString() {
return year + " ";
} public static void main(String[] args) {
MyDate_Constructor t1 = new MyDate_Constructor();
System.out.println(t1); //得1992 MyDate_Constructor t2 = new MyDate_Constructor(2014); //得2014
System.out.println(t2); MyDate_Constructor t3 = new MyDate_Constructor(t1); //调用拷贝方法复制实例。这句话功能相当于test1 t3 = new test1(); t3.set(t1);
System.out.println(t3); //得1992
}
}
4、问题:instanceof运算符怎么用?
MyDate d = new MyDate();
d instanceof MyDate //结果是true。d是MyDate类的实例。 怎么执行出来?
class test
{
} class test_1
{
} class test_ex
{
public static void main(String[] args)
{
test t = new test();
boolean b1 = t instanceof test;
System.out.println(b1); //得true
/*
test_1 t1 = new test_1();
boolean b2 = t1 instanceof test; //错误:t1不可转换的类型
System.out.println(b2);
*/
}
}
5、问题:对4个訪问权限的作用范围不理解?
6、Java类中的成员分为两种:实例成员(属于对象,要创建实例,才干訪问)和静态成员(属于类。没创建实例。也能够訪问)。
问题:静态成员怎么用?
7、问题:一个源程序文件中面包括两个类为什么有错啊(Myeclipse 10)? 在控制台上都能够执行。编译生成两个字节码文件test.class和test_1.class
学习笔记 Java类的封装、继承和多态 2014.7.10的更多相关文章
- 学习笔记——Java类和对象
今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
- java类的封装 继承 多态
1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...
- C++学习笔记3——类的封装(1)
封装: 1.把属性和方法进行封装. 2.对属性和方法进行访问控制. class和struct的区别: class和struct的唯一区别是默认的访问权限不一样.struct的默认访问权限是public ...
- C++学习笔记4——类的封装(2)
简介: 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.其中一元运算符有一个参数,二元运算符有两个参数. 可以被重载的运算符 + - * / % ^ ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
随机推荐
- day05_03 字符串格式化
pycharm小技巧,一般情况下都需要在代码前注释以下作者以及创建日期 但是如何让软件默认生成呢? 格式化输出 可以用占位符 %s string的缩写 #__author:Administra ...
- C语言总结(5)
一.函数的定义: 函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数.例如:scanf(),printf()为库函数,cylinder(),fact()为自定义函数. 函数定义的一般形式: ...
- ABP数据库的迁移
添加表,一(Test)对多(Test1)关系 Test using Abp.Domain.Entities.Auditing; using System; using System.Collectio ...
- DS博客作业06—图
1.本周学习总结 1.1思维导图 1.2学习体会 2.PTA实验作业 2.1 图着色问题 图着色问题是一个著名的NP完全问题.给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色, ...
- 【转】深入理解JVM—JVM内存模型
http://www.cnblogs.com/dingyingsi/p/3760447.html#3497199 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU ...
- 【Luogu】P1169棋盘制作(单调栈)
题目链接 唉……这种题放在NOIP以前我是会做的……但是为什么现在反而不会了…… 单调栈.预处理每个点向上能扩展的最大距离,左右用两遍单调栈扫一遍.注意边界. #include<cstdio&g ...
- 【Luogu】P3343地震后的幻想乡(对积分概率进行DP)
题目链接 神难qwq.配合rqy的博客食用. 首先我们学到有一个概率函数$p(x)$表示某事件发生概率取值小于x的函数.这个函数有什么特点呢? 那就是$\int_{-∞}^{∞}p(x)dx=1$ 这 ...
- 用-webkit-box-reflect制作倒影
1.只在webkit内核的浏览器上有效果 2.语法: -webkit-box-reflect: <direction> <offset> <mask-box-image& ...
- Java面试题之final、finally和finalize的区别
final: final是一个修饰符,可以修饰变量.方法和类,如果final修饰变量,意味着变量的值在初始化后不能被改变: 防止编译器把final域重排序到构造函数外:(面试的时候估计答出这个估计会加 ...
- socket编程-微软小兵
socket两端建立连接,不断开的连接的情况下做数据交互,客户端发送数据和服务端返回数据.直到客户端要求断开,则关闭连接. 代码目录结构: