学习Java笔记(一)
1.父类方法使用private声明可以进行覆写吗?
答:不可以。
class A{public void fun(){this.print();}private void print(){System.out.println("111");}
}
class B extends A{public void print(){ System.out.println("222");}
}
public class TestDemo {public static void main(String[] args) {B b = new B();b.fun();}
}
运行结果:111
这里无论B类中的方法使用public,default或者private,输出结果都一样。利用快捷键在B类中选择重写方法,没有选择重写A类中的print方法的,所以不可以覆写父类中的private声明的方法。子类中的这个方法相当于定义了一个新的方法,这一方法与父类无关。
2.父子类对象的转换
-向上转型:子类对象变为父类对象(自动转换)
格式:父类 父类对象 = 子类实例
目的:参数统一,但是通过子类实例化后的父类对象所能调用的方法只能是父类中定义过的方法。
结果为由父类对象调用方法,根据子类是否覆写了父类中的方法来执行,如果子类覆写了,那么调用的是子类覆写过的方法。,否则调用父类中定义的方法。但是对象一旦向上转型,那么就无法调用子类原本的特有的方法和属性。
-向下转型:父类对象变为子类对象(强制转换)
格式:子类 子类对象 = (子类)父类实例
目的:父类对象要调用实例化它的子类中的特殊方法, 前提条件是必须发生向上转型后才可以发生向下转型,容易带来安全隐患。
向下转型过程中要注意的是:
情况一:如果父类引用的对象引用的是指向的子类对象,那么在向下转型的过程中是安全的,也就是编译是不会出错误的。**
情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.classcastException的错误,可以使用instanceof来避免出此类错误。
---------------------**
作者:littleAsuna
来源:CSDN
原文:https://blog.csdn.net/baidu_26954625/article/details/90581757
java.lang.classcastException指的是类转换异常,指的是两个没有关系的类对象强制发生向下转型时所带来的异常。
对象 instanceof 类 返回Boolean型
如果某个对象是某个类的实例,则返回true,否则返回false。
基本的向上转型和向下转型:
class A{public void print(){System.out.println("1");}
}
class B extends A{public void print(){System.out.println("2");}}
class C extends A{public void print(){System.out.println("3");}
}
public class TestDemo {public static void main(String[] args) {//只要是A类的子类都可以使用向上转型,由A类接收A a1 = new B(); //向上转型A a2 = new C(); //向上转型B b1 = (B) a1; //向下转型a1.print();a2.print();b1.print();}
}
向下转型调用子类中的特殊功能:
class A{public void print(){System.out.println("1");}
}
class B extends A{public void print(){System.out.println("2");}public void funB(){System.out.println("B扩充的方法");}
}
public class TestDemo{public static void main(String[] args) {fun(new B());}private static void fun(A a) { //统一参数if(a instance of B){B b = (B) a; //因为要调用子类的特殊功能,需要向下转型b.funB(); //调用子类扩充的方法} }
}
3.public class和class的区别
public class:文件名称必须与类名称保持一致在一个.java文件中只能有一个public class声明,可以被不同的包访问。
class:文件名称与类名称可以不一致,一个.java文件中可以有多个class定义,编译后会形成多个.class文件,只能被此类所在的包访问。
4.java命名规范
类名称:每个单词的开头首字母大写。
变量/方法:第一个单词的首字母小写,之后每个单词的首字母大写。
常量名称:每个字母大写。
包名称:所有字母小写。
5.单例设计模式与多例设计模式
单例设计模式(只有一个实例化对象):
类中的全部属性应该封装,封装后要想取得属性则要编写getter方法,这时getter方法应该由类名称直接调用,且为static,static定义的属性特点是由类名称直接调用,且在没有实例化对象的时候可以调用。
class Singleton{private final static Singleton instance = new Singleton();private Singleton(){//构造方法私有化}public void print(){System.out.println("hello world!");}public static Singleton getInstance() { //取得本类的对象return instance;}}
public class SingletonTestDemo {public static void main(String[] args) {Singleton inst = null; //声明对象inst = Singleton.getInstance();inst.print();}
}
多例设计模式(多个对象):
class Sex{private String title;private static final Sex MALE = new Sex("男");private static final Sex FEMALE = new Sex("女");private Sex(String title) {this.title = title;}@Overridepublic String toString() {return this.title;}public static Sex getInstance(String ch){switch(ch){case "man":return MALE;case "female":return FEMALE;default:return null;}}
}
public class 多例设计模式 {public static void main(String[] args) {Sex sex = Sex.getInstance("man");System.out.println(sex);}
}
学习Java笔记(一)相关推荐
- 学习Java笔记2018.3.31
Java简介: Java特点: * 纯面向对象: * 可移植性高,或者说与平台无关的语言(所有的数据类型在所有的操作系统中占据相同的内存) * 严格区分大小写: 复制代码 Java两种核心机制: 1. ...
- 2022.0727学习Java笔记之多线程编程(二)
多线程的操作方法 多线程的操作方法基本上都在Thread类之中定义的,所以研究方法也就是一个Thread类的翻译,那么下面主要看三组方法. 1.线程的命名和取得 在整个多线程的操作之中,名称是最重要的 ...
- 零基础学习Java开发,这些学习笔记送给你!
因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...
- 零基础学习Java开发,这些学习笔记送给你
因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...
- Java -考研 学习路线(笔记链接汇总)-个人用
文章目录 1. Java 学习路线 1.1 JavaSE 1.1.1 C 语言基础 1.1.2 面对对象程序设计C++ 1.1.3 Java 基础 1) 基础 2) GUI 3) 网络编程 4) 多线 ...
- 慕课Java第三季学习及笔记整理
学习网址及截图和部分图片来源:https://www.imooc.com/learn/110 慕课Java第三季学习及笔记整理 一.异常与异常处理 1-1 java异常简介 概念 异常体系结构 1-2 ...
- 课堂笔记学习java(初级)
这是有关Java语言基础的,偶这学期专业课开始学习java,希望通过此贴把偶的课堂笔记与大家分享,与初学者共同从零学起,还请各位高手随时指点,引导大家把基础打好,谢谢 . 现在每周两节课,偶 ...
- Java笔记(学习中。。)
Java笔记 eclipse的使用 常用的dos指令 预备知识 基本语法 变量 关于字符型 关于String 进制转换 运算符 流程控制 数组 数组的内存解析: 数组的Arrays工具类 面向对象 对 ...
- 学java怎么做笔记?如何整理java笔记?java学习笔记
许多开始学Java编程的朋友,都是跟着视频学习的,知道要记笔记,但又不知如何下手.其实笔记主要的还是记框架以及自己能感觉到不懂得地方方便巩固加深印象,笔记不要记得密密麻麻的看着就让人感觉头疼,学习编程 ...
最新文章
- Javascript 变量、函数的声明
- JavaWeb学习之路——SpringBoot 中thymeleaf模板用法(三)
- cocos2d-x游戏开发(十三)细说回调函数
- 回文数、括号匹配(栈操作)
- 【1024】我的CSDN博客之路,感谢CSDN,我们一路同行!深度学习系列专栏回顾
- POJ 1191 棋盘分割【区间类DP】
- ORBSLAM:词袋(Bag of Words)
- html跳转按钮谷歌浏览器点击没反应,在各个浏览器点击按钮都没有反应
- 中职网络安全—隐藏信息探索
- Vueb报错[WDS] Errors while compiling. Reload prevented
- 字符串常见方法总结:方法的作用、参数、返回值
- 统计学---数据的误差
- csapp家庭作业第十章
- 8.0.高等数学3-向量的乘法运算(数量积、向量积与混合积)
- SpringBoot配置文件中spring.profiles.active配置详解
- vue子组件通过.sync修饰符修改props属性
- 基金公司业务突围策略探析——产品布局+工具化定位
- SpringBoot(尚硅谷学习笔记)
- 告别BenQ, 新选blackberry
- 天天团购注册页面空白问题
热门文章
- SAP Spartacus 的会话管理 Session Management
- 第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
- ABAP Development Tool 代码模板和其他一些实用技巧汇总
- 一份我们团队Java开发的开发规范,参考了阿里巴巴Java开发手册终极版v1.3.0
- SAP Spartacus home page的三大section
- 阿里云上JDK安全证书的实际位置
- SAP UI5 datajs.js response handling
- when is SAP UI5 formatter called
- 如何处理My lead fiori应用的buffer问题
- SAP CRM ABAP Product search authorization check - 产品搜索的权限检查机制