java面向对象语言的学习笔记.docx
- 文档编号:27767873
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:16
- 大小:18.67KB
java面向对象语言的学习笔记.docx
《java面向对象语言的学习笔记.docx》由会员分享,可在线阅读,更多相关《java面向对象语言的学习笔记.docx(16页珍藏版)》请在冰豆网上搜索。
java面向对象语言的学习笔记
1面向对象(oop)
类:
java的一个最小的单位(把有共性的一些个体声明一个类来封装起来)
对象:
单独指代一个,创建对象的方式,调用构造方法来创建对象--------------------------------类名对象名=new类名();
属性:
用来描述对象的特征
方法:
(构造方法,无返回值方法,有返回值的方法),用来描述对象的一些行为动作
构造方法:
必须是public修饰,没有返回值(不能写void)方法名字必须和类名相等用来创建对象的
无返回值的方法,用void修饰的方法,不需要返回值的时候用
Publicvoidtest(){
}
有返回值的方法,用数据类型来修饰,当我们需要返回值类型的时候
PublicStringtest(){
Returnnull;
}
权限修饰符
从小到大;private------default-----protected------------public
面向对象的特征
封装:
将属性或者方法私有化
继承
多态:
方法的重载,一个方法可以实现多个功能,静态的多态对内一种状态对外多种状态
2全局变量和局部变量
全局变量:
类里面方法和外面直接声明的变量(以类为单位)
局部变量:
在方法中声明的变量
packagecom.www.eec.vo;
publicclassPersonDemo{//public类定义的是全局变量有class的是全局变量
privateStringname="王昭君";//全局变量
publicintage;
publicvoidtest(){//全局变量可以在类中任意使用
Stringhusband="单于";//局部变量
System.out.println("名字是:
"+name+"夫君是:
"+husband);
}
//husband=“单于”;局部变量只作用于本方法里面
publicstaticvoidmain(String[]args){
PersonDemopd=newPersonDemo();
pd.test();
}
}
输出王昭君的夫君是单于
packagecom.www.eec.vo;
publicclassPersonDemo{
privateStringname="王昭君";
publicintage;
publicvoidtest(){
name="貂蝉";//局部变量,对象可以调用对象的方法
Stringhusband="吕布";
System.out.println("名字是:
"+name+"夫君是:
"+husband);
}
publicstaticvoidmain(String[]args){
PersonDemopd=newPersonDemo();
pd.test();//对象可以调用对象的方法
}
}
输出貂蝉的夫君是吕布
全局变量与局部变量
packagecom.www.eec.vo;
publicclassPersonDemo{
privateStringname="王昭君";
publicintage;
publicvoidtest(Stringname){//定义形参,实参赋值给形参
Stringhusband="项羽";
System.out.println("名字是:
"+name+"夫君是:
"+husband);
}
publicstaticvoidmain(String[]args){//main只在主类
PersonDemoperson=newPersonDemo();
person.test("虞姬");
}
}
classPerson{
//name=“123“;PersonDemo中的name只作用于当前的PersonDemo类
Stringname;
publicStringtest(Stringname){
returnthis.name=name;//与全局变量一样,全局变量可以拿到,局部变量this不能省略
}
}
输出虞姬的夫君是项羽
Private私有化
Private必须写get和set方法
packagecom.www.eec.vo;
publicclassPersonDemo1{
privateStringname;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;//不写this分不清setName中的name是那个name
}
publicstaticvoidmain(String[]args){
PersonDemo1pd=newPersonDemo1();
pd.setName("花千骨");
System.out.println(pd.getName());
}
}
3方法的重载
方法名字相等,方法参数不等(静态多态)
参数的类型不同,参数的个数不同,当参数的类型不同时,参数的顺序不同
和返回值不同
构造方法也可以进行重载(重载的时候可以初始化变量)
当类中没有写任何构造方法的时候默认会有一个空的构造方法
当类中有带参数的构造方法的时候,默认没有无参的构造方法
packagecom.www.eec.vo;
publicclassPerson01{
privateStringname;//全局变量name,声明了全局使用的name调用
//privateintage;
publicvoideat(){
System.out.println(name+"吃什么不知道");
}
publicvoideat(Stringapple){
System.out.println(name+"吃"+apple);
}
publicvoideat(Stringapple,intnumber){
System.out.println(name+"吃了"+number+"个"+apple);
}
publicvoideat(intnumber,Stringapple){
System.out.println(name+"吃了"+number+"个"+apple);
}
publicStringeat(Stringorange,Stringapple){//拼接字符串
returnname+"吃"+orange+"吃"+apple;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicstaticvoidmain(String[]args){
Person01person=newPerson01();
person.setName("关羽");
person.eat();//找无参的括号里面没有东西,先找数目有两个有参数
person.setName("诸葛亮");
person.eat("苹果");//void无返回值,自己输出语句
person.setName("曹操");
Stringstr=person.eat("橘子","苹果");//返回值return的打印
System.out.println(str);//字符串String的输出
}
}
输出
关羽吃什么不知道
诸葛亮吃苹果
曹操吃橘子吃苹果
Private私有化快捷键source
构造方法可以也可以进行重载(重载的时候可以初始化变量)
当类中没有写任何构造方法的时候默认会有一个空的构造方法
当类中有带参数的构造方法的时候,默认没有无参的构造方法
User.java
packagecom.www.eec.vo;
publicclassUser{
privateStringuser;
privateStringpwd;
publicUser(){
System.out.println("我是构造方法");
}
PublicUsergetMethod(){
ReturnnewUser();
}
Useruser=user.getMethod();//私有化构造方法
publicUser(Stringuser){
System.out.println("我是有参数的构造方法,用户名是:
"+user);
}
publicUser(Stringuser,Stringpwd){
System.out.println("用户名是:
"+user+"密码是:
"+pwd);
}
publicStringgetUser(){
returnuser;
}
publicvoidsetUser(Stringuser){
this.user=user;
}
publicStringgetPwd(){
returnpwd;
}
publicvoidsetPwd(Stringpwd){
this.pwd=pwd;
}
}
UserTest.java
packagecom.wwwww.eec.vo;
importcom.www.eec.vo.User;
publicclassUserTest{
publicstaticvoidmain(String[]args){
Useruser=newUser();//User形参
System.out.println("===============");
Useruserr=newUser("admin");//通过构造方法来初始化变量
System.out.println("===============");
Useruserrr=newUser("admin","88888");
}
}
输出
我是构造方法
===============
我是有参数的构造方法,用户名是:
admin
===============
用户名是:
admin密码是:
88888
判断登录成功
packagecom.wwwww.eec.vo;
importcom.www.eec.vo.User;
importjava.util.Scanner;
publicclassUserTest{
publicstaticvoidmain(String[]args){
Useruser=newUser("admin","admin");
System.out.println("请输入用户名");
Scannerscan=newScanner(System.in);
StringuserName=scan.next();
System.out.println("请输入密码");
StringuserPwd=scan.next();
if(userName.equals("admin")){
if(userPwd.equals("admin")){
System.out.println("登录成功");
}else{
System.out.println("密码错误");
}
}else{
System.out.println("用户名不存在");
}
}
}
4高级修饰符
Static静态的
Final最终的(常量)
Abstract:
抽象的
Synchronized线程同步的(安全的)
静态类名调用
Static可以通过类名调用
所有对象共享一块区域
都从static开始,属于类不属于对象。
静态创建对象直接调用对象
先走静态块再走动态方法
Employee.java
packagecom.www.eec.vo;
publicclassEmployee{
privateStringname;
privateStringpwd;
privatestaticintcount=0;
publicEmployee(){
count++;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetPwd(){
returnpwd;
}
publicvoidsetPwd(Stringpwd){
this.pwd=pwd;
}
publicstaticintgetCount(){
returncount;
}
publicstaticvoidsetCount(intcount){
Employee.count=count;
}
}
EmployeeTest.java
packagecom.wwwww.eec.vo;
importcom.www.eec.vo.Employee;
publicclassEmployeeTest{
publicstaticvoidmain(String[]args){
Employeeemp1=newEmployee();
Employeeemp2=newEmployee();
System.out.println(emp1.getCount());
}
}
输出2先调用emp1一次输出1在调用emp一次输出2
修饰符static
Static:
静态的,可以用来修饰类的属性或者方法,如果类的某个属性,不管创建多少个对象都应该用static修饰,被static修饰的属性被称为静态属性
Static修饰的属性属于class
Static修饰的属性或者方法都可以通过类名直接调用
任何方法都可以调用静态方法
静态方法不能直接调用非静态方法,需要创建对象,用对象名调用非静态方法
非静态的订票系统
packagecom.www.eec.vo;
publicclassTicketSeller{
privateinttickets=11;
publicvoidticketSeller(){
tickets=tickets-1;
System.out.println("剩余票数:
"+tickets);
}
publicstaticvoidmain(String[]args){
TicketSellerts1=newTicketSeller();
TicketSellerts2=newTicketSeller();
ts1.ticketSeller();
ts2.ticketSeller();
}
}
输出
剩余票数:
10
剩余票数:
10
加上静态属性
packagecom.www.eec.vo;
publicclassTicketSeller{
privatestaticinttickets=11;
publicstaticvoidticketSeller(){
tickets=tickets-1;
System.out.println("剩余票数:
"+tickets);
}
publicstaticvoidmain(String[]args){
TicketSellerts1=newTicketSeller();
TicketSellerts2=newTicketSeller();
ts1.ticketSeller();
ts2.ticketSeller();
}
}
输出
剩余票数:
10
剩余票数:
9
与对象无关的加static,可以省略对象名
packagecom.www.eec.vo;
publicclassTicketSeller{
privatestaticinttickets=11;
publicstaticvoidticketSeller(){
tickets=tickets-1;
System.out.println("剩余票数:
"+tickets);
//newTicketSeller().test();
test();
}
Publicstaticvoidtest(){
System.out.println(”helloworld”);
}
publicstaticvoidmain(String[]args){
ticketSeller();
ticketSeller();
TicketSeller.ticketSeller();
TicketSeller.ticketSeller();
}
}
输出
剩余票数:
10
剩余票数:
9
剩余票数:
8
剩余票数:
7
Array数组
Arrays一个类操作数组
Math.addExact(2,3);求和
调用importjava.util.Arrays;
5静态块
Static{}
静态块在JVM加载时,就会执行该代码块,和创建对象无关
先走静态块,再走动态方法
packagecom.www.eec.vo;
publicclassStaticDemo{
staticintcount=0;
publicvoidStaticDemo(){
System.out.println("我是构造方法");
count++;
System.out.println(count);
}
static{
count++;
System.out.println("我是静态块");
}
publicstaticvoidmian(String[]args){
StaticDemosd=newStaticDemo();
StaticDemosd1=newStaticDemo();
sd.StaticDemo();
}
}
Final修饰符
Final修饰常量必须初始化,只能赋值一次
先找常量池无,再在堆中重新new一个同样的值,(常量池中的值一般不能改变)再在常量池中重新加载,地址发生了变化
packagecom.www.eec.vo;
publicabstractclassTest{
privatefinaldoublepi=3.14;
publicabstractvoidtestt();//abstract抽象的
publicfinalvoidtest(){
//pi=3.14;//final只能赋值一次
}
}
6String类型
==比的是虚地址(0101001)虚地址一样true
Equal比的是值,引用数据的内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 语言 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)