1、问题:toString()没搞懂?

  1. int a = 1;
  2. Integer aa = new Integer(a); //这是实现的过程
  3. System.out.println("Hello," + aa.toString()); //得Hello,1
  4.  
  5. int b = 1;
  6. System.out.println("Hello," + b); //得Hello,1
  1. class MyDate
  2. {
  3. int year,month,day;
  4.  
  5. public int get()
  6. {
  7. return year;
  8. }
  9.  
  10. public static void main(String[] args)
  11. {
  12. MyDate d1 = new MyDate();
  13. System.out.println(d1); //打印类名的时候。须要复写父类的toString()方法
  14. System.out.println(d1.get()); //打印类中的方法时。不用复写。由于方法里面有自己写的返回。
  15. }
  16. }

2、代码:MyDate.java 通过声明MaDate类,演示类的声明格式、创建对象、引用对象成员变量、调用对象成员方法等语法。

  1. public class MyDate { //类声明
  2. int year, month, day; //成员变量,表示年、月、日
  3. void set(int y, int m, int d){ //成员方法,设置日期值
  4. this.year = y;
  5. this.month = m;
  6. this.day = d;
  7. }
  8.  
  9. void set(MyDate d){ //将当前对象值设为參数值,重载
  10. set(d.year, d.month, d.day);
  11. }
  12.  
  13. public String toString(){ //返回中文日期字符串
  14. return year + "年" + month + "月" + day + "日";
  15. }
  16.  
  17. public boolean equals(MyDate d){
  18. return this == d || d != null && year == d.year && month == d.month && day == d.day;
  19. //&&的优先级好像比||高。
  20.  
  21. this == d ||表示假设d1d2引用同一个实例。那么d1d2的值就相等,就直接返回truethis:指代调用成员方法的当前对象本身。this.year:訪问本类的成员变量和成员方法)
  22. }
  23.  
  24. public static void main(String[] args) {
  25. MyDate d1 = new MyDate(); //声明对象、创建实例、引用赋值
  26. d1.set(1992, 10, 13); //调用类的成员方法
  27.  
  28. MyDate d2 = d1; //对象引用赋值
  29. System.out.println("d1:" + d1.toString() + ", d2:" + d2 + ", d1 == d2?
  30.  
  31. " + (d1 == d2) + " d1.equals(d2)?
  32.  
  33. " + d1.equals(d2));
  34. //==、!=推断d1和d2是否引用同一个实例。equals()比較d1和d2的值是否相等
  35. //为什么假设不加public String toString(),这里就会出现哈希那一坨(它怎么会去调用那个函数呢?) .toString()能够省略
  36. //得d1:1992年10月13日, d2:1992年10月13日, d1 == d2?true d1.equals(d2)?
  37.  
  38. true
  39.  
  40. d2.year = 2014; //改动实例成员变量值
  41. System.out.println("d1:" + d1 + ", d2:" + d2 + ", d1 == d2?
  42.  
  43. " + (d1 == d2) + " d1.equals(d2)?
  44.  
  45. " + d1.equals(d2));
  46. //得d1:2014年10月13日, d2:2014年10月13日, d1 == d2?true d1.equals(d2)?
  47.  
  48. true
  49.  
  50. d2 = new MyDate(); //创建还有一个实例
  51. d2.set(d1);
  52. System.out.println("d1:" + d1 + ", d2:" + d2 + ", d1 == d2?" + (d1 == d2) + " d1.equals(d2)?
  53.  
  54. " + d1.equals(d2));
  55. //得d1:2014年10月13日, d2:2014年10月13日, d1 == d2?false d1.equals(d2)?
  56.  
  57. true
  58. }
  59. }

3、代码:MyDate_Constructor.java 类的构造方法

  1. public class MyDate_Constructor {
  2. int year; //成员变量
  3.  
  4. public MyDate_Constructor() { //默认构造方法
  5. // year = 1992;
  6. this(1992); //this:调用本类已定义的构造方法
  7. }
  8.  
  9. public MyDate_Constructor(int y) { //声明构造方法。初始化成员变量
  10. year = y;
  11. }
  12.  
  13. public MyDate_Constructor(MyDate_Constructor t) { //拷贝构造方法,创建新实例,值同參数实例
  14. // year = t.year;
  15. this(t.year);
  16. }
  17.  
  18. public String toString() {
  19. return year + " ";
  20. }
  21.  
  22. public static void main(String[] args) {
  23. MyDate_Constructor t1 = new MyDate_Constructor();
  24. System.out.println(t1); //得1992
  25.  
  26. MyDate_Constructor t2 = new MyDate_Constructor(2014); //得2014
  27. System.out.println(t2);
  28.  
  29. MyDate_Constructor t3 = new MyDate_Constructor(t1); //调用拷贝方法复制实例。这句话功能相当于test1 t3 = new test1(); t3.set(t1);
  30. System.out.println(t3); //得1992
  31. }
  32. } 

4、问题:instanceof运算符怎么用?

  1. MyDate d = new MyDate();
  2. d instanceof MyDate //结果是true。d是MyDate类的实例。
  3.  
  4. 怎么执行出来?
  1. class test
  2. {
  3. }
  4.  
  5. class test_1
  6. {
  7. }
  8.  
  9. class test_ex
  10. {
  11. public static void main(String[] args)
  12. {
  13. test t = new test();
  14. boolean b1 = t instanceof test;
  15. System.out.println(b1); //得true
  16. /*
  17. test_1 t1 = new test_1();
  18. boolean b2 = t1 instanceof test; //错误:t1不可转换的类型
  19. System.out.println(b2);
  20. */
  21. }
  22. }

5、问题:对4个訪问权限的作用范围不理解?

6、Java类中的成员分为两种:实例成员(属于对象,要创建实例,才干訪问)和静态成员(属于类。没创建实例。也能够訪问)。

问题:静态成员怎么用?

7、问题:一个源程序文件中面包括两个类为什么有错啊(Myeclipse 10)? 在控制台上都能够执行。编译生成两个字节码文件test.class和test_1.class

学习笔记 Java类的封装、继承和多态 2014.7.10的更多相关文章

  1. 学习笔记——Java类和对象

    今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...

  2. java类的封装 继承 多态

    1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...

  3. C++学习笔记3——类的封装(1)

    封装: 1.把属性和方法进行封装. 2.对属性和方法进行访问控制. class和struct的区别: class和struct的唯一区别是默认的访问权限不一样.struct的默认访问权限是public ...

  4. C++学习笔记4——类的封装(2)

    简介: 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.其中一元运算符有一个参数,二元运算符有两个参数. 可以被重载的运算符 + - * / % ^ ...

  5. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  6. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  7. python学习笔记4_类和更抽象

    python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...

  8. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  9. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

随机推荐

  1. python基础学习笔记——单继承

    1.为什么要有类的继承性?(继承性的好处)继承性的好处:①减少了代码的冗余,提供了代码的复用性②提高了程序的扩展性 ③(类与类之间产生了联系)为多态的使用提供了前提2.类继承性的格式:单继承和多继承# ...

  2. 修改Echarts 图表的坐标轴的文本的排列位置

    option.xAxis.axisLabel['interval'] = 0 option.xAxis.axisLabel['formatter'] = function(value,index){ ...

  3. js各种继承方式和优缺点的介绍

    js各种继承方式和优缺点的介绍 作者: default 参考网址2 写在前面 本文讲解JavaScript各种继承方式和优缺点. 注意: 跟<JavaScript深入之创建对象>一样,更像 ...

  4. js---post与get请求的区别

    request获取请求参数 最为常见的客户端传递参数方式有两种: 浏览器地址栏直接输入:一定是GET请求: 超链接:一定是GET请求: 表单:可以是GET,也可以是POST,这取决与<form& ...

  5. MySQL基本命令和常用数据库对象

    MySQL基本命令: 连接远程主机的MySQL服务(为了保证安全性,执行下面命令时,可以省略-p后面的密码,执行命令后系统会提示输入密码) mysql -p 密码 -u 用户名 -h 主机地址 --d ...

  6. linux 基础 软件的安装 *****

    一软件的安装   原代码与tarball 源代码---->编译------>可执行文件 查看文件类型   file命令    是否是二进制文件 注意如果文件的可执行权限 .c结尾的源文件- ...

  7. 如果奇迹有颜色,那么一定是暴力or模拟比较6

    模拟就是一个思想,给你一个东西,没有很好的算法去解决,只需要计算机去暴力,优雅的暴力就可以叫算法了 主要还是考大家的代码能力,这次题目应该不需要任何前置技能. 1001 Time Limit(Comm ...

  8. 以前刷过的FFT

    Gym - 101667H 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest #include<bits/stdc++.h> using ...

  9. Educational Codeforces Round 34 (Rated for Div. 2)

    A. Hungry Student Problem time limit per test 1 second memory limit per test 256 megabytes input sta ...

  10. HashMap源码分析jdk1.6

    HashMap数组每个元素的初始值为NULL  1.定义 public interface Map<K,V> { int size(); boolean isEmpty(); boolea ...