面向对象1(Java)
什么是面向对象
- 面向对象编程(oop)
- 面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据
- 抽象
- 三大特征:封装、继承、多态
- 从认识论角度考虑是先有对象后有类。对象是具体的事物。类是抽象的,是对对象的抽象
- 从代码运行角度考虑是先有类后有对象。类是对象的模板
回顾方法及加深
运用实例1
public class FangFa {
//mian方法
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(...){
//方法体
return 返回值;
}
*/
//brake:用于结束switch,和结束循环
//return:用于结束整个程序,return之后不能在写代码了
public String sayHello(){
return "hello,world!";
}
public void print(){
return;
}
//抛出异常
//public String readFile(String file) throws IOException{
//
//}
public int max(int a,int b){
return a>b?a:b;//三元运算符
}
}
运用实例2
public class FangFa2 {
//静态方法:含有static,和类一起加载
//非静态方法:不含static,类实例化之后才存在
public static void main(String[] args) {
//实例化学生类 new
//对象类型 对象名=对象值;
Student student = new Student();
student.sayHello();
//实际参数要和形式参数的类型要对应!如:都要是int类型
int add=add(1,2);//int类型
System.out.println(add);
//值传递
int a=1;
System.out.println(a);
zhi(a);
System.out.println(a);//输出的值为1
//引用传递:对象,本质还是值传递
Person person=new Person();
System.out.println(person.name);//null
person.name="李同洲";
System.out.println(person.name);
}
//实际参数要和形式参数的类型要对应!
public static int add(int a,int b){//int类型
return a+b;
}
//值传递
//返回值为空
public static void zhi(int a){
a=10;
}
}
//学生类
class Student {
//非静态方法
public void sayHello(){
System.out.println("学生说话了");
}
}
//定义一个Person类,有一个属性:name
class Person{
String name;//null
}
类与对象
基本介绍
- 类与对象的关系:
- 类是一种抽象的数据类型,他是对某一类事物整体描述\定义,但并不代表某一个具体的事物
- 对象是抽象概念的具体实例化:如:张三是人的实例化;张三的旺财是狗的实例化
- 创建与初始化对象
- 使用new关键字创建对象
- 使用new关键字创建对象时,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中的构造器的调用
运用实例
public class New {
//一个项目应该只存在一个main方法
public static void main(String[] args) {
//类:抽象的,实例化
//类实例化后会返回一个自己的对象
//xm、xh对象就是一个Student类的具体实例
Stedents xh=new Stedents();
Stedents xm=new Stedents();
System.out.println(xh.name);//null
xm.name="李同洲";
xm.age=8;
System.out.println(xm.name);
System.out.println(xm.age);
xm.study();
}
}
//学生类
class Stedents{
//属性:字段
String name;
int age;
//方法
public void study(){
System.out.println(this.name+"在学习");
}
}
构造器(构造方法)
基本介绍
- 类中的构造器也成为构造方法,是在进行创建对象时必须要调用的。
- 构造器的特点:a.必须和类的名字相同;b.必须没有返回类型,也不能写void。
- 构造器的作用:a.new 本质是调用构造方法;b.初始化对象的值
- 注意:一旦定义了有参构造,就必须要显示无参构造
运用实例
public class GouZao {
//一个项目里必须只存在一个main方法
public static void main(String[] args) {
//由People()构造方法然后才可以实例化对象
//new 一个实例化对象
People li = new People();
System.out.println(li.name);//由People()构造方法赋予了name初始值null
People tong=new People("li");
//tong.name="李同洲";
System.out.println(tong.name);
}
}
class People{
String name;
//一个类即使什么都不写,他也存在一个方法
//显示的定义构造器
//实例化初始值
//1.使用new关键字,必须要有构造器,本质是在调用构造器
//无参构造:在没有有参构造时,可以不显示
public People() {
}
//有参构造:一旦定义了有参构造,就必须要显示无参构造
public People(String name) {
this.name = name;
}
}
试题例如
public class Pet {
public static void main(String[] args) {
Pets dog = new Pets();
dog.name="旺财";
dog.age=3;
System.out.println(dog.name);
System.out.println(dog.age);
dog.shout();
Pets cat = new Pets();
System.out.println(cat.name);
System.out.println(cat.age);
cat.shout();
}
}
class Pets{
String name;
int age;
public Pets() {
}
public Pets(int age) {
this.age = age;
}
public Pets(String name) {
this.name = name;
}
public void shout(){
System.out.println("在叫!");
}
}
面向对象1(Java)的更多相关文章
- 面向对象编程 —— java实现函数求导
文章目录 ★引子 ★求导 ★最初的想法 ★初步的想法 ★后来的想法 ★最后的想法 ★编程范式 ★结尾 首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地.科 ...
- 201771010118马昕璐《面向对象程序设计java》第八周学习总结
第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...
- 201771010134杨其菊《面向对象程序设计java》第十周学习总结
第8章泛型程序设计学习总结 第一部分:理论知识 主要内容: 什么是泛型程序设计 泛型类的声明及实例化的方法 泛型方法的定义 ...
- 201771010134杨其菊《面向对象程序设计java》第九周学习总结
第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...
- 201771010134杨其菊《面向对象程序设计java》第八周学习总结
第八周学习总结 第一部分:理论知识 一.接口.lambda和内部类: Comparator与comparable接口: 1.comparable接口的方法是compareTo,只有一个参数:comp ...
- 面向对象的Java实现
1.面向对象的Java实现--封装 1-1:封装 a.为什么需要封装(封装可以是数据方便维护.增加实用性.方便扩展等等.通过面向对象的思想,模拟现实生活中的事物.) b.什么是封装(封装就是将属性私有 ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
随机推荐
- 用JMeter对MySQL数据库进行压测
转载链接:https://www.cnblogs.com/Jadie/p/8056541.html 参考链接:https://blog.csdn.net/qq_35389417/article/det ...
- Angular中播放RTSP
要使用这个库需要先安装 我使用了npm来安装 https://www.npmjs.com/package/webrtc-streamer 需要启动webrtc-streamer后端,这里有下载地址 h ...
- ncnn 加载 bin文件时,出错 报异常 0xC0000094:Integer division by zero。
这次转yolov8.pt 到 onnx 到 ncnn,调用ncnn,加载bin文件时出错报异常 0xC0000094:Integer division by zero. 解决方式: 导出onnx时,加 ...
- Spring Boot应用启动
1.Eclipse 中启动Spring Boot应用 右键应用程序启动类, Run As Java Application 2.maven 命令: mvn spring-boot:run 在应用程序启 ...
- 【文献阅读】An efficient motion planning based on grid map: Predicted Trajectory Approach with global path guiding
(1)主要工作内容 本文提出了一种基于轨迹预测法的欠驱动无人艇的全局运动规划算法.该方法考虑了无人艇的所有动力学约束,并且能找到一条根据船舶自身操纵系统进行跟踪的全局轨迹. 根据USV数学模型生成的预 ...
- @Service注解
@Service注解的作用之一就是添加在Service层做Bean实例化, 在遇到service层方法有多个实现时也可指定@Service(name=""),并在controlle ...
- VM-tools灰色无法安装
VM-tools灰色无法安装 选择"使用物理驱动器-自动检测". 参考链接: [1] https://www.jianshu.com/p/af4313d92fee
- 如何在 Visual Studio 中自定义 Docker 容器 和 使用 Docker Compose 为 Visual Studio 创建多容器应用
https://learn.microsoft.com/zh-cn/visualstudio/containers/container-build?WT.mc_id=visualstudio_cont ...
- Python学习笔记组织文件之将指定目录下的指定格式文件压缩到指定文件夹
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案
var threeSumClosest = function(nums, target) { let ans = nums[0] + nums[1] + nums[2]; const len = nu ...